azkaban任务状态一直在Preparing状态不能更新的解决办法

本文探讨了Azkaban任务无法从Preparing转为Running的原因,主要分为两个方面:找不到合适的executor和executor设置限制不满足。通过理解Azkaban的executor选择机制,并调整相关配置,如禁用某些选择器、增大executor允许的任务数,可以避免任务卡在Preparing状态。当调整后仍有问题,可能需要检查executor的最大线程数和允许启动的任务数配置。通过增大这些参数,可以确保任务能快速进入运行状态,但过度设置可能导致集群资源耗尽。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题一度困扰我很久,后来经过仔细研究,我可以让任务秒变running,  即使任务把机器跑挂了(因为我真把集群跑挂了)都不会是死在 Preparing状态不动。

问题根源:

1、没有找到满足条件的executor

2、找到了满足条件的executor,executor的设置的限制不满足

最多就这二点问题。

解决方法:

第一个问题,得先看看azkaban是怎么选举executor的,看一张关于选择器说明的图,原文后来找了一下没找到了

 明白了每个选择器的用途,那就可以任意的调整了,可以把那些什么cpu、内存选择的通通干掉,什么最后一次执行的任务数、分配的任务数设置到很大,比如这样

#Multiple Executor
azkaban.use.multiple.executors=true
#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.filters=StaticRemainingFlowSize
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=100
#azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=100
#azkaban.executorselector.comparator.CpuUsage=1

这样任务就不可能执行不起来。

但是,如果这样设置之后真出现了执行不起来的,一直死在Preparing状态,那就是第二个问题

azkaban-executor有两个配置,如下

# Azkaban Executor settings
executor.maxThreads=150(默认值50)
executor.flow.threads=100 (默认值30)

executor.flow.threads : 这个参数是控制当前executor允许启动任务的个数的

如果第一个问题的修改没解决问题,就干他,干到很大就完事。

我有两台测试机,这个参数设置是30的时候,启动60个任务之后后面的就起不来了,一直在准备状态不动, 我干到100跑spark任务,跑到70多个集群就跑挂了,但是秒变running.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值