Azkaban 分布式调度方案详解

1. 获取每台 Azkaban-exec 的状态
    方法:ExecutorManager.refreshExecutors()

    调用机制:1. 任务流启动时间点 – 上次 refreshExecutors 的时间 > 参数时间                

                          参数时间:azkaban.activeexecutor.refresh.milisecinterval=6000  

                          代表 6 秒必刷一次。  

                     2. 任务流连续执行的次数 >= 参数次数  

                         参数次数:azkaban.activeexecutor.refresh.flowinterval=3  

                         代表连续执行 3 个任务流必刷一次。

 

2. PK 角逐出胜者以执行当前任务流。
    方法:ExecutorComparator.compare()

    角逐规则:

                     #每台 azkaban-exec 已登记的流的数量;(未运行完成的也算)建议权重 3 #谁少谁胜             

                      azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=3

                   #每台 azkaban-exec 剩余内存情况;先比绝对值 MB,MB 一样,比百分比。建议权重 2 #谁多谁胜

                     azkaban.executorselector.comparator.Memory=2

                  #每台 azkaban-exec 上次调度的时间(非运行持续时间), 建议权重 0 #谁小谁胜

                    azkaban.executorselector.comparator.LastDispatched=0

                  #每台 azkaban-exec  CPU 负载   建议权重 2 #谁少谁胜

                   azkaban. executorselector.comparator.CpuUsage=2

3. Azkaban-exec 返回状态
    Azkaban-exec 返回状态时,有 1 秒的缓存。

    换言之,提交时间1S内,所有的流必然分配到一台机器。

    解决这个问题需要修改源码:

    部分修改如下:

        final List<Pair<String, String>> paramList = new ArrayList<>();
        final Pair<String, String> pair;
        pair = new Pair<>("nocache", "true");
        paramList.add(pair);

参考连接:http://www.zjc-boy.top/archives/Azkaban%20%E8%B0%83%E5%BA%A6%E5%80%BE%E6%96%9C%E9%97%AE%E9%A2%98%E4%B8%80%E4%BE%8B
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值