前言
通过一个WordCount来简单了解Spark Streaming执行过程。
Spark Streaming示例之WordCount
以下方式可以直接在本地运行,在运行前先在Master201机器上通过nc -lk 9999的方式开启一个socket服务,用于发送数据
1 | [root@master201 ~]# nc -lk 9999 |
然后直接通过以下代码在本地运行即可,咱们在正常开发的时候也可以使用这种方式调试好自己的代码,然后再提交带集群当中去执行
1 | package lishijia.spark.demo.streaming |
Spark Streaming 工作原理
在Spark Streaming中会有一个组件Receiver作为一个长期运行的Task执行在Executor上
每个Receiver都会负责一个Input DStream,这个Input可以来源于文件流、套接字流、或者Kafka等
Spark Streaming通过Input DStream与外部数据进行连接,读取相关数据。
DStream可以理解为是一个数据集(数组或者List),它里面存储的每一个元素是RDD结构;即DStream是由一串RDD所组成的数据集
Spark Streaming程序基本执行步骤
编写Spark Streaming程序的基本步骤如下:
- 通过创建输入DStream来定义输入源
- 通过DStream应用转换操作和输出操作来定义流计算
- 用streamContext.start()来开始接收数据和处理流程
- 通过streamContext.awaitTermination()方法来等待处理结束(手动结束或因错误结束)
- 通过streamContext.stop()来手动结算计算进程或者kill方式
Spark Streaming提交Yarn运行
提交到Yarn任务调度中心执行最好把setMaster删除,之前写的是local[0]执行方式
1 | val sc = new SparkConf().setAppName("SocketToStreaming") |
1 | # maven打包,通过assembly打全量包 |
创建提交任务执行命令脚本:run_wordcount.sh
1 | cd /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7 |
通过Hadoop的Yarn管理控制台可以看到任务执行情况
执行结果如下,也可以看执行的间隔时间为2s
通过如下命令可以关闭任务执行
1 | [root@master201 spark-streaming]# yarn application -kill application_1543841766630_0001 |
总结
通过以上方式可以初步了解到一个Spark Streaming程序的执行基本过程。