安全停止sparkStreaming任务
来源:互联网 发布:大数据导论教材 编辑:程序博客网 时间:2024/05/17 23:27
目的:
1.确保数据处理完后,才停止Job
原因:
因为Spark Streaming流程序比较特殊,所以不能直接执行kill -9 这种暴力方式停掉,如果使用这种方式停程序,那么就有可能丢失数据或者重复消费数据。
为什么呢?因为流程序一旦起来基本上是一个7*24小时的状态,除非特殊情况,否则是不会停的,因为每时每刻都有可能在处理数据,如果要停,也一定要确认当前正在处理的数据执行完毕,并且不能在接受新的数据,只有这样才能保证不丢不重。
如何优雅的关闭spark streaming呢?方式主要有两种:
第一种:全人工介入
首先程序里面设置下面的配置参数(1.4之后版本)
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
第二种:使用HDFS系统做消息通知
在驱动程序中,加一段代码,这段代码的作用每隔一段时间可以是10秒也可以是3秒,扫描HDFS上某一个文件,如果发现这个文件存在,就调用StreamContext对象stop方法,自己优雅的终止自己,其实这里HDFS可以换成redis,zk,hbase,db都可以,这里唯一的问题就是依赖了外部的一个存储系统来达到消息通知的目的,如果使用了这种方式后。停止流程序就比较简单了,登录上有hdfs客户端的机器,然后touch一个空文件到指定目录,然后等到间隔的扫描时间到之后,发现有文件存在,就知道需要关闭程序了。
阅读全文
0 0
- 安全停止sparkStreaming任务
- SparkStreaming如何优雅的停止服务
- sparkStreaming提交任务时指定参数
- sparkStreaming
- sparkStreaming
- sparkstreaming
- SparkStreaming
- 停止expdp任务
- 定时循环停止任务
- 正确停止expdp导出任务
- 48_停止异步任务
- 正确停止expdp导出任务
- 安卓handler停止任务
- Java安全停止线程方法
- Java安全停止线程方法
- 线程池/安全停止线程
- 服务停止后,quartz自动任务无法停止
- Oracle诊断案例-Job任务停止执行
- 马化腾、李彦宏、雷军,程序员国服三强谁的编程能力最牛?
- 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!
- Andriod_day02
- 为什么耗资数亿的12306一直都非常难用?
- JS、PHP、Python等五大编程语言爆漏洞;中兴 70 后程序员坠亡;雷军平定迅雷内乱 | 一周业界事
- 安全停止sparkStreaming任务
- 全球开发者调查:JavaScript 成最爱,还最喜欢用 React
- Android 8.1 频频被曝 Bug,是要赶超苹果吗?
- 全球活跃开发者不足 1500 万,业余爱好者和学生仅占四分之一
- 中国码农在硅谷:告诉你如何斩获Google、微软、FB、Airbnb 四家 Offer
- UE4蓝图节点整理(是不特别全)
- zzzzz
- 关于lamdba表达式
- 输出GPLT(c语言)