如何停止SparkStreaming服务

本文介绍如何优雅地关闭Spark Streaming程序,避免数据丢失或重复。包括使用Spark参数、发送SIGTERM信号及利用HDFS进行通知的方法。

      网上的怎么关闭SparkStreaming的文章一大堆,可我还是费了很大的力气才解决了我的问题。

    我们都知道SparkStreaming程序是一个长服务,一旦运转起来不会轻易停掉,那么如果我们想要停掉正在运行的程序应该怎么做呢?
    如果运行的是spark on yarn模式直接使用
            # yarn application -kill taskId 
    暴力停掉sparkstreaming是有可能出现问题的,比如你的数据源是kafka,已经加载了一批数据到sparkstreaming中正在处理,如果中途停掉,这个批次的数据很有可能没有处理完,就被强制stop了,下次启动时候会重复消费或者部分数据丢失。

    如何解决? 

    方案一: Spark1.4之前的版本,需要一个钩子函数(该方案弃用)

                sys.ShutdownHookThread {
                    log.info("Gracefully stopping Spark Streaming Application")
                    ssc.stop(true, true) 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值