码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SparkStreaming (六) --------- 优雅关闭


    目录


    流式任务需要 7*24 小时执行,但是有时涉及到升级代码需要主动停止程序,但是分布式程序,没办法做到一个个进程去杀死,所有配置优雅的关闭就显得至关重要了。使用外部文件系统来控制内部程序关闭。

    ➢ MonitorStop

    import java.net.URI
    import org.apache.hadoop.conf.Configuration
    import org.apache.hadoop.fs.{FileSystem, Path}
    import org.apache.spark.streaming.{StreamingContext, StreamingContextState}
    class MonitorStop(ssc: StreamingContext) extends Runnable {
    	override def run(): Unit = {
    		val fs: FileSystem = FileSystem.get(new URI("hdfs://linux1:9000"), new Configuration(), "fancyry")
    		while (true) {
    			try
    				Thread.sleep(5000)
    			catch {
    				case e: InterruptedException =>
    				e.printStackTrace()
    			}
    			
    			val state: StreamingContextState = ssc.getState
    			val bool: Boolean = fs.exists(new Path("hdfs://linux1:9000/stopSpark"))
    			if (bool) {
    				if (state == StreamingContextState.ACTIVE) {
    					ssc.stop(stopSparkContext = true, stopGracefully = true)
    					System.exit(0)
    				}
    			}
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    ➢ SparkTest

    import org.apache.spark.SparkConf
    import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
    import org.apache.spark.streaming.{Seconds, StreamingContext}
    object SparkTest {
    	def createSSC(): _root_.org.apache.spark.streaming.StreamingContext = {
    		val update: (Seq[Int], Option[Int]) => Some[Int] = (values: Seq[Int], status:
    		Option[Int]) => {
    			//当前批次内容的计算
    			val sum: Int = values.sum
    			//取出状态信息中上一次状态
    			val lastStatu: Int = status.getOrElse(0)
    			Some(sum + lastStatu)
    		}
    		val sparkConf: SparkConf = new
    		SparkConf().setMaster("local[4]").setAppName("SparkTest")
    		//设置优雅的关闭
    		sparkConf.set("spark.streaming.stopGracefullyOnShutdown", "true")
    		val ssc = new StreamingContext(sparkConf, Seconds(5))
    		ssc.checkpoint("./ck")
    		val line: ReceiverInputDStream[String] = ssc.socketTextStream("linux1", 9999)
    		val word: DStream[String] = line.flatMap(_.split(" "))
    		val wordAndOne: DStream[(String, Int)] = word.map((_, 1))
    		val wordAndCount: DStream[(String, Int)] = wordAndOne.updateStateByKey(update)
    		wordAndCount.print()
    		ssc
    	}
    	def main(args: Array[String]): Unit = {
    		val ssc: StreamingContext = StreamingContext.getActiveOrCreate("./ck", () =>
    		createSSC())
    		new Thread(new MonitorStop(ssc)).start()
    		ssc.start()
    		ssc.awaitTermination()
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    html静态网站基于动漫主题网站网页设计与实现共计10个页面——二次元漫画
    干货分享丨第五届“大数据安全与隐私计算”学术会议
    【电路笔记】-脉冲宽度调制(PWM)与电机转速控制
    java计算机毕业设计移动端校园请假系统设计与实现服务器端MyBatis+系统+LW文档+源码+调试部署
    系列学习 SpringCloud-Alibaba 框架之第 4 篇 —— Sentinel 高可用流量控制组件
    【外汇天眼】交易之路:从无知到觉醒,揭秘成功交易员的五个成长阶段
    Java高级---Spring Boot---1引言
    微前端基础知识
    Richardson Software RazorSQL 10.0 Crack
    分析了60款链游,发现40%的玩家都是机器人
  • 原文地址:https://blog.csdn.net/m0_51111980/article/details/126705331
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号