Spark Streaming 监控失败后自动重启

本文介绍了一种针对SparkStreaming的故障自动重启策略,包括进程监控与重启、计算卡顿的手动干预方法,以及如何在重启后恢复状态,适用于所有常规Linux进程。

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

Spark Streaming 监控,Spark Streaming 失败重启,Spark Streaming 卡住重启。

作者:草小诚(wellsmile@foxmail.com)
转载请注原文地址:https://blog.youkuaiyun.com/cxcjoker7894/article/details/89350437

本没想写这篇,因为这种监控方式并不限于spark,而是linux进程通用的监控方式,但发现我的另一篇【Spark Streaming 任务定时清零重启】,很多人都是搜索了失败重启才点进的,既然有需求就写一下,很简单。

Spark Streaming 异常分两种:一种是处理逻辑中代码抛异常了,一种是没有异常但是因为各种原因停止继续计算了。对于监控来说区别就在于前者Job进程会死掉,而后者Job进程还会存在。

思路:

  1. 定时监测Spark Streaming 进程,如果死掉了就重新启动。
  2. 定时查看计算结果,如果发现计算停止了就手动杀掉进程,同样由第1点负责重启。

第1点实现:
由于是crontab,先常规source环境变量,PS1为带有spark streaming字样的进程数量(如果不止一个job则自行区分),如果为0则可判断进程死亡,则添加1分钟后重新启动的定时任务,其中 start_spark.atfile 为启动spark的at命令文件,是为了在后台启动。

#!/bin/bash
source /etc/profile
PS1=$(ps -ef | grep spark_streaming.py | grep -v grep | wc -l)
if [ $PS1 -eq 0 ];
then
    /usr/bin/at now +1 minutes -f /log/logging/info/spark-streaming/atfile/start_spark.atfile
else
    echo 'Spark Streaming is running.'
fi

第2点实现:
这个就因人而异了,总之看自己的计算结果中时间如果太长了,就可以判定为spark卡住了,杀之即可,杀掉后就不用管了,上面第1点的脚本会重启好的。这里再附上杀进程的脚本。

#!/bin/bash
source /etc/profile
PS2=$(ps aux | grep spark_streaming.py | grep -v grep)
IFS=' '
arr=($PS2)
spark_pid=${arr[1]}
kill -9 $spark_pid
echo 'killed spark'

有个注意点:
如果在Job中维护了状态(state),重启之后会导致状态的丢失,如果想要追回状态,需要将计算源重新过一遍,比如文件流(textFileStream)就要在重启之后将文本重新append到监听目录一遍。

第1点的进程重启监控适用于所有常规linux进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值