如何优雅的停止Spark streaming,由于Spark streaming一直是运转的,但是有时候我们是需要停止Spark streaming,但是如果强行停止是可能丢失数据的,所以为了保证数据不丢失,停止的时候需要注意,不能使用kill -9,这样会丢数据的。
停止的方法很多种,这里给大家介绍下:
第一种:
spark.streaming.stopGracefullyOnShutdown为true
sparkConf.set("spark.streaming.stopGracefullyOnShutdown","true")//优雅的关闭
然后按照下面的步骤依次操作:
(1)通过Hadoop 8088页面找到运行的程序
(2)打开spark ui的监控页面
(3)打开executor的监控页面
(4)登录liunx找到驱动节点所在的机器ip以及运行的端口号
(5)然后执行一个封装好的命令
sudo ss -tanlp | grep 5555 |awk '{print $6}'|awk -F, '{print $2}' | sudo xargs kill -15
第二种:上面第一种有的老铁运用的可能不好,所以觉得不管用,这里在提供一种方法。通过外部设置让系统感知,比如通过外部文件,或则外部端口发送关闭信息,内部系统检测到后,调用内部的ssc.stop(true, true),来停止Spark streaming。
(1)外部文件,这个文件可以存储到hdfs,zookeeper等任何地方。然后系统定时检测,如果没有文件正常运行,如果有文件则停止Spark streaming。
(2)外部端口,同样Spark streaming需要监听这个端口,端口发送停止的信号的时候,Spark Streaming调用ssc.stop(true, true),来停止Spark streaming。
来自: