一、故障背景
2021-02-17 早晨发现钉钉群在07:00发出告警:
Flow data_warehouse status is RUNNING, totally 164 unsuccessful job, primarily because:
dwa_vvip_page_user_trail_daily status:RUNNING
dwa_openplatform_xmfm_vip_listeninfo_daily status:RUNNING
dwa_vvip_marketing_special_uid_growth_channel_daily status:RUNNING
dwa_vvip_related_dau_distribution_daily status:RUNNING
dwa_spot_31_vvip_rebuy_daily status:RUNNING
al_trail_operation_dashboard_year status:RUNNING
dwa_vip_group_center_uv_daily status:RUNNING
dwa_vvip_msg_mail_task_6 status:RUNNING
dwa_vvip_msg_mail_task_3 status:RUNNING
dwa_vvip_mngr_report_daily status:RUNNING
dwa_trail_index_new_daily status:RUNNING
dwa_trail_index_trail_weekly status:RUNNING
dwa_vvip_marketing_special_uid_code_daily status:RUNNING
dwa_channel_order_path_new_daily status:RUNNING
dwa_xiaoshuo_page_user_trail_daily status:RUNNING
当天早晨的04:03由钉钉群报出15条告警消息,查看这些告警消息发现都是内存溢出。
二、排查过程
(1)登录Azkaban,根据钉钉告警提到的job名称依次检查相关的日志,发现有大量的内存溢出的记录。
(2)登录Yarn 的RM主页,发现有大量的Nodes下线。
(3)登录上述job作业运行所在的集群主机,分别检查下线Node的软件环境和硬件环境:软件环境方面的NodeManager进程仍然存活;检查硬件环境的内存发现,Yarn中显示下线的NodeManager节点的可用内存已经不足(剩余100~300Mb)。
(4)继续检查下线NodeManager的日志,发现有多条记录显示当前节点已被加入黑名单。
(5)被加入黑名单会导致当前节点不可用,而集群NodeManager节点的减少进一步导致了离线作业的可用资源继续减少,恶性循环的结果导致上百个节点接二连三被拖垮。
三、恢复方案
爆出故障后,第一时间分析原因并果断采取措施:重启各NodeManager。从故障发出到恢复集群用了半小时,当天上午的离线作业未明显延迟。
四、预防措施
(1)及时关注钉钉群发出的数仓作业Failed告警消息;
(2)可以考虑对离线数仓作业的资源需求做适当的限制,或者为数仓作业所在的计算集群做容量升级(扩容)。