Spark应用中断监控

前言

本文主要是围绕spark on yarn cluster模式运行spark应用。在实际应用中,会碰到这种情况,应用被中断、应用未中断但是不执行计算、应用中某些任务失败等。我们将应用部署后,不可能时时都关注,当应用被中断时,怎么能尽快恢复应用的正常运行。我这里采用脚本+服务监控的方式进行维护。

实践

一般情况下,查看应用的运行情况,我的流程:

那么我的脚本+服务监控方式是围绕上述流程图中的yarn application --list开展的。

脚本监控思路:查看yarn application --list中是否有指定的应用,没有就执行重启操作,并记录日志;有则忽略。

脚本示例:

#!/bin/sh
#应用名称
appArr=(app1 app2)
time=$(date "+%Y-%m-%d %H:%M:%S")
#标记变量
t=0
flag=0
#对比$appArr与yarn application --list
for app in ${appArr[@]}
do
  for appRun in `yarn application --list`
  do
    if [ $app = $appRun ]
    then
        flag=1
        #echo "${time} appName($appRun) exists in yarn application list" >> /home/test/sparkMonitor.log
        break
    fi
  done
  if [ $flag -eq 0 ]
  then
      appNotRunArr[t]=$app
      t=`expr $t + 1`
  else
      flag=0
  fi
done
#检测没有运行的应用,执行重新启动命令
for appNotRun in ${appNotRunArr[@]}
do
  echo "${time} appName($appNotRun) start!" >> /home/test/sparkMonitor.log
  # start.sh指的是应用的spark-submit脚本。下述是重启应用,具体根据自己的实际情况
  cd /home/test/$appNotRun && ./start.sh
done

 

服务监控思路:根据yarn的对外接口,查看指定队列的执行状态的SPARK任务:

GET http://<rm http address:port>/ws/v1/cluster/apps?state=RUNNING&applicationType=SPARK &queue=your queue

将获取的结果与自己应运行的所有应用进行对比,将没有运行的应用发短信或邮件通知给负责人。

总结

文中提供的脚本+服务的方式一定程度上可以在应用中断的情况下重新启动,如果应用重启仍然失败的情况下,可以利用服务通知给负责人。至于应用运行中的job、stage、task监控,可以查看spark web ui进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值