Impala动态资源池及放置规则使用

Posted Hadoop实操

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Impala动态资源池及放置规则使用相关的知识,希望对你有一定的参考价值。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

https://github.com/fayson/cdhproject


提示:代码块部分可以左右滑动查看噢

文档编写目的


Fayson在前面的文章介绍了《》。管理员可以通过Impala的动态资源池、放置规则及ACL控制不同的用户对Impala资源使用。本篇文章主要介绍如何配置Impala的放置规则,通过一个场景进行描述,在不给作业指定资源池的情况,通过Impala的放置策略将不同的用户提交的SQL分配到不同的资源池中。

  • 内容概述

1.场景描述及测试用户准备

2.Impala资源池和放置规则配置

3.放置规则验证及总结


  • 测试环境

1. CM和CDH版本为5.15

测试场景描述


示例场景如下:当前CDH集群供多个业务部门使用,需要为各个业务部门划分不同Impala资源池,对应业务组的用户作业需要自动的提交到划分的资源池中。如下图所示:

通过上图可以看到有Impala的资源池中创建3个队列:业务组A、业务组B、default。右边有多个业务组的用户,在用户提交作业时需要根据用户所在的也业务组不同自动为用户分配不通的资源池,接下来Fayson通过具体的Yarn动态资源池放置规则的配置进行实现。

测试用户准备


在配置前Fayson先准备三个测试用户usera、userc和usere,三个用户的组分别为testa、testb、testc。

1.在CDH集群的所有节点创建testa、testb、testc三个组,testa表示“业务组A”、testb表示“业务组B”、testc不属于任何业务组。

[root@cdh01 shell]sh ssh_do_all.sh node.list "groupadd testa"
[root@cdh01 shell]sh ssh_do_all.sh node.list "groupadd testb"
[root@cdh01 shell]sh ssh_do_all.sh node.list "groupadd testc"

(可左右滑动)

Impala动态资源池及放置规则使用

2.在集群所有节点创建usera、userc、usere三个用户

[root@cdh01 shell]sh ssh_do_all.sh node.list "useradd usera"
[root@cdh01 shell]sh ssh_do_all.sh node.list "useradd userc"
[root@cdh01 shell]sh ssh_do_all.sh node.list "useradd usere"

(可左右滑动)

Impala动态资源池及放置规则使用

3.将usera添加groupa组,userc添加groupb组,usere添加groupc组

sh ssh_do_all.sh node.list "usermod -a -G testa usera"
sh ssh_do_all.sh node.list "usermod -a -G testb userc"
sh ssh_do_all.sh node.list "usermod -a -G testc usere"

(可左右滑动)

Impala动态资源池及放置规则使用

4.验证创建的测试用户是否已添加到对应的业务组中

Impala动态资源池及放置规则使用

Impala动态资源池配置


根据上述的需求场景,这里需要修改默认Impala资源池配置,将资源池按照上面的业务组进行创建,在root根资源池下面分别创建testa、testb、default三个资源池。

1.使用管理员登录CM,进入Impala动态资源池管理界面

Impala动态资源池及放置规则使用

2.删除默认的资源池配置,将资源池配置为如下

Impala动态资源池及放置规则使用

注意:资源池的名称需要与业务组的名称一致,否则会导致用户不能匹配到相应的资源池。

Impala放置规则配置


在上一步完成的资源池的配置,并没有进行放置规则的配置,如果使用默认的放置规则,usera、userc、usere用户提交的作业均会被分配到default池,接下来需要进行放置规则的配置。

1.在Impala的动态资源池配置界面点击菜单“放置规则”,进入配置界面

Impala动态资源池及放置规则使用

2.将默认的放置规则删除,添加新的放置规则,两条规则分别如下:

规则一:”root.[pool name]”

Impala动态资源池及放置规则使用

规则二:“root.[secondary group]”

Impala动态资源池及放置规则使用

3.创建完成后的放置规则顺序如下:

Impala动态资源池及放置规则使用

关于放置规则类型的解释说明:

root.[pool name]:该规则始终满足,在其它规则不匹配的情况下使用,因此该规则默认要放置在所有匹配规则之后。

root.[primary group]:该放规则使用与该用户主要组匹配的资源池。Linux中用户默认的主要组与用户名一致,匹配时会通过用户的主要组与资源池名称比对。

root.[secondarygroup]:该放置规则用于匹配用户的次要组,使用与次要组之一匹配的资源池。

root.[username]:该放置规则用于匹配与用户名一致的资源池。(不推荐使用)

已在运行时指定:该放置规则主要使用在运行时指定的资源池。

 

放置规则的判断方式,根据放置规则的顺序1、2、3…进行判断,判断到满足条件的放置规则后,后续的规则不再进行匹配。

验证放置规则


分别使用usera、userc、usere三个用户向Impala集群提交SQL,根据上述规则的设置,usera用户提交的作业回到groupa资源池,userc用户提交的作业会到groupb资源池,userc用户提交的作业会到default资源池。

1.使用usera向Impala提交SQL作业

Impala动态资源池及放置规则使用

2.使用userc向Impala提交SQL作业

Impala动态资源池及放置规则使用

3.使用usere向Impala提交SQL作业

Impala动态资源池及放置规则使用

4.通过Cloudera Manager的Impala查询界面查看

三个用户的SQL作业通过Impala的放置规则被分配到不同的资源池里。

总结


1.通过配置放置规则的方式可以将不同用户或不同业务的作业划分到指定的资源池中,在示例中Fayson使用了Secondary Group放置规则来划分用户作业所属资源池。


2.在Secondary Group放置规则中,用户除了主要组外其他组均为次要组,都可以走Secondary Group的放置策略。


提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

以上是关于Impala动态资源池及放置规则使用的主要内容,如果未能解决你的问题,请参考以下文章

如何启用Impala的动态资源池

进程池线程池及回调函数使用

Java ExecutorService四种线程池及ThreadPoolExecutor机制

使用Spark Streaming + Kudu + Impala构建一个预测引擎

java 自定义线程池及参数怎么设置?

java 自定义线程池及参数怎么设置?