3.azkaban3.0测试

测试目标

azkaban多executor下flow的分配方式
azkaban可以同时执行的flowjob个数
azkaban单个job最小使用的内存

相关配置

executor最大线程数: executor.maxThreads=50
executor同时执行的flow最大数 executor.flow.threads =30
executor每个flow最多同时执行的job数 flow.num.job.threads =10

测试

1.azkaban多executor下flow的分配方式
a.先启动flow20end_noop,该flow包含20个job

发最多只有10个job在执行.
查看主机上执行的任务情况:

[root@bqbpdevs2 conf]# ps -ef|grep "sleep 300" |grep -v grep -c
10
[root@bqbpdevs3 ~]# ps -ef|grep "sleep 300" |grep -v grep -c
0

发现先启动flow20end_noop只在节点2上运行,节点3上没有运行.

b.再启动一个任务flow30end_noop,该flow包含30个job

[root@bqbpdevs2 conf]# ps -ef|grep "sleep 300" |grep -v grep -c
10  ##flow20end_noop的10个任务
[root@bqbpdevs3 ~]# ps -ef|grep "sleep 300" |grep -v grep -c
10

发现flow30end_noop只在节点3上面运行,
c.再启动一个任务flow40end_noop

[root@bqbpdevs2 conf]# ps -ef|grep "sleep 300" |grep -v grep -c
10
[root@bqbpdevs3 ~]# ps -ef|grep "sleep 300" |grep -v grep -c
20

发现flow40end_noop只在节点3上启动.

以上测试说明,azkaban每个flow只会分配在一个节点上

2.azkaban可以同时执行的flowjob个数
a.最大支持的flow数

同时起了38个flow.
说明executor.flow.threads这个参数是针对每个executor的而是不azkaban集群

b.测试azkban job最大并行度

[root@bqbpdevs2 conf]# ps -ef|grep "sleep 300" |grep -v grep -c
0
[root@bqbpdevs3 ~]# ps -ef|grep "sleep 300" |grep -v grep -c
101

启动了11个flow,这些flow刚好全启动在了节点3上.同时执行了101个job.
说明executor.maxThreads=50不能控制每个节点上job的并行数.

3.azkaban单个job最小使用的内存
找到一个执行中的进程,查看内存:

每个sleep 命令大概用了620字节,并且系统中无其它azkaban进程(server除外)
说明azkaban在提交任务后会退出,所使用的内存由程序决定

总结

1.azkaban的每个flow中会分配到一个节点上执行
2.每个flow中同时执行的job数由flow.num.job.threads决定
3.参数executor.maxThreads=50在job运行时无效,应该是提交任务的线程数
4.每个节点能执行的最大job数= executor.flow.threads * flow.num.job.threads
5.azkaban提交任务后线程会退出,不占用内存.





原文地址:https://www.cnblogs.com/skyrim/p/7456010.html