后台挂载spark-streaming程序
我们在x-shell中通过yarn-client的方式提交spark-streaming程序时,会存在一个小问题:如果中断程序的运行或者将x-shell窗口关闭,spark-streaming程序也会中断。
为了解决这个问题,我们可以使用以下脚本命令命令:
nohup /opt/client/Spark2x/spark/bin/spark-submit --class com.xxx.project --master yarn --deploy-mode client --executor-memory=2g --executor-cores=4 --num-executors=2 --jars /xxx/fastjson-1.2.47.jar,/xxx/gson-2.4.jar /xxx/YourJar.jar 1>/xxx/task.log 2>&1 &
nohup就是讲spark-streaming挂载后台运行,然后将日志定向输出到**/xxx/task.log**
监控spark-streaming程序
首先,我们需要知道通过什么命令查看我们的程序是否正常运行:
yarn application -list
这个可以查看正在运行的spark程序列表,当然包括spark-streaming。
那么,我们的思路大概就是这样的:每隔一段时间,查看我们的spark-streaming是否在yarn正在运行列表(通过spark的AppName),如果不在则调用启动命令。
follow_status=$(yarn application -list| awk '{print $2}' | grep Follow_Collision_Streaming_ID_$i | wc -l)
if [ $follow_status == 0 ];
then
echo $follow_status
nohup /opt/client/Spark2x/spark/bin/spark-submit --class com.xxx.project --master yarn --deploy-mode client --executor-memory=2g --executor-cores=4 --num-executors=2 --jars /xxx/fastjson-1.2.47.jar,/xxx/gson-2.4.jar /xxx/YourJar.jar 1>/data/KnowledgeGraph/spark/Log/task.log 2>&1 &
fi
加入Linux定时任务
进入**/var/spool/,可以看到每个用户的定时任务列表,如root,直接vim root**
新增一行,填入以下内容:
*/1 * * * * sh /usr/local/spark.sh
*/1 * * * *
是Linux crontab的定时格式:每分钟执行一次。有5个单位:分、时、天、月、周。例如第一个*/
就表示每隔一分钟,第二个*
表示匹配所有小时。
具体用法可以百度。
sh /usr/local/spark.sh其实就是执行你的sh脚本文件了。
欢迎关注同名公众号:“我就算饿死也不做程序员”。
交个朋友,一起交流,一起学习,一起进步。