一、背景
在azkaban调度流程中,flow(工作流)可能经常由于机器性能,如网络、内存、cpu负载等问题导致当时那个时间点下任务执行不成功。
如果没有添加任务失败的重试机制,则下游的flow因上游失败而无法获取执行机会,换言之,调度失败的flow及其之后的flow都将无法正常执行。
比如ETL流程中的sqoop数据抽取脚本,假如一个库中有50个表需要抽取,如果用户为该调度配置了50个flow,则由于上述不可控的原因,造成中间某些节点执行中断,则中断节点及其之后的节点都将执行失败。
如果在失败后,我们能添加一些重试参数,则可以较大幅度的提升任务的稳健性,通过设置合适的重试次数与重试间隔,则任务成功的概率会较大幅度提升。
二、常见的失败重试参数
调优参数 | 说明 | 单位 |
---|---|---|
retries | 失败的job的自动重试的次数 | 次数 |
retry.backoff | 180000 | 毫秒 |
三、按flow逐项修改
如下所示:
四、批量修改
步骤1:下载配置文件
步骤2:批量修改配置文件
azkaban_params_tuningng_script.sh 代码清单:
代码实现目标:
- 1、将上述下载并解压的调度文件批量进行配置参数的插入;
- 2、执行位置进行执行(如3a表示在第三行之后插入调优项);
1 #!/bin/bash
2
3 AZKABAN_PATH=./azkaban_project_demo
4
5 ls $AZKABAN_PATH|while read f;do
6 echo $AZKABAN_PATH/$f
7 #echo -e '\nretries=5\n' >> $f;
8 #echo 'retry.backoff=180000' >> $f;
9
10 sed -i "3aretries=5" $AZKABAN_PATH/$f
11 sed -i "4aretry.backoff=180000" $AZKABAN_PATH/$f
12 done
替换完成后,再重新打包成zip包:
yum -y install zip
zip -r AFTER_TUNING_PARAMS.zip ./azkaban_project_demo