Hive多SQL任务参数采样过程超时杀任务后解析出2条日志
问题信息
信息名称 |
信息内容 |
---|---|
问题来源 |
网上维护 |
产品大类 |
鲲鹏BoostKit |
产品子类 |
大数据 |
业务场景 |
调试运行 |
组件分类 |
其他 |
输出时间 |
2024/4/22 |
案例作者 |
伍锐恒 |
所属团队 |
鲲鹏BoostKit |
评审结果 |
评审通过 |
评审时间 |
2024/5/10 |
发布时间 |
2024/6/30 |
关键字 |
Hive多SQL任务参数采样过程超时杀任务后解析出2条日志 |
归属文档 |
OmniAdvisor 特性指南 |
问题现象描述
当Hive多SQL任务在进行参数采样时,若任务运行时间超过了当前数据库中最佳参数执行时间的两倍时,会触发Kill任务逻辑。由于Tez机制原因,被Kill掉的DAG有小概率会重新拉起一个新的任务,在这种情况下老的采样任务可能会出现只存在部分SQL的DAG且为执行成功的状态,此时日志解析有小概率解析到两条任务,其中一条为部分SQL的成功任务。
在配置identification为application_name时,会认为这个不全的成功任务为该调优任务较优的参数,导致推荐出较慢的参数。
此时观察timeline server界面,可见被Kill的任务和自行重新拉起的任务。
关键过程、根本原因分析
无
结论、解决方案及效果
当参数调优配置“$OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/config/common_config.cfg”文件配置项中的identification_type为默认值job_hash时,该任务匹配会失败,不影响参数调优,继续进行采样和推荐即可。
当identification_type为application_name时,需要进入数据库中清理异常数据,详情请见下列操作。
- 在Yarn Timeline的Web页面或者参数调优日志输出“yarn app -kill”后续的字样中查询到被kill的任务id,假设为killed_app_id,任务的application_name假设为app_name。
- 进入MySQL数据库中,选择对应的数据库
# 输入账号密码进入MySQL mysql -uuser -ppassword # 选择使用的database use hive_test;
- 从历史任务表history_config中删除被Kill的任务的解析内容。
DELETE FROM history_config WHERE application_id='killed_app_id';
- 从历史任务表history_config中选择当前最优的参数更新到最优任务表best_config中。
UPDATE best_config SET parameters = subquery.parameters, duration_time = subquery.duration_time FROM ( SELECT parameters, duration_time FROM history_config WHERE application_name = 'app_name' ORDER BY duration_time ASC LIMIT 1 ) AS subquery WHERE best_config.application_name = 'app_name';
- 继续进行参数采样或者参数推荐即可。
父主题: 故障排除