FusionInsight大数据开发---SparkStreaming概述
SparkStreaming概述
SparkStreaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。
SparkStreaming原理
- SparkStreaming接收实时的输入数据流,然后将这些数据切分为批数据供Spark引擎处理,Spark引擎将数据生成最终的结果数据。
- 使用DStream从Kafka和HDFS等源获取连接的数据流。DStream是一系列连续的RDD组成。
SparkStreaming数据源
- 基本源:HDFS等文件系统、Socket连接等
- 高级源:Kafka等
- 自定义源: 需要实现用户自定义receiver
可靠性(二次开发)
- Reliable Receiver
- 设置CheckPoint
- 确保Driver可以自动启动
- 使用Write Ahead Log 功能
SparkStreaming代码流程
常见业务代码逻辑
- 创建StreamingContext
- 定义输入源
- 准备应用计算逻辑
- 使用streamingContext.start()方法接受和处理数据。
- 使用streamingContext.stop()方法停止流计算。
窗口操作
SparkStreaming支持窗口计算,允许用户在一个滑动窗口数据上应用transformation算子。
窗口在源DStream上滑动,合并和操作落入窗口RDDs,产生窗口化的DStream的RDDs。
Checkpoint
SparkStreaming可以checkpoint足够的信息到容错存储系统中,以使系统崩溃后从故障中恢复。
- Metadata checkpoint:保存流计算的定义信息到HDFS中
- Data checkpoint:保存生成的RDD到HDFS中。
SparkStreaming性能调优
- 设置合理的批处理时间(batch Duration)
- 设置合理数据接收并行度
- 设置多个Receiver接受数据
- 设置合理的Receiver阻塞时间
- 设置合理数据处理并行度
- 使用Kryo系列化
- 内存调优
- 设置持久化级别减少GC开销
- 使用并发的标记-清理GC算法减少GC暂停时间
愿路途漫长,以后莫失莫忘。 愿你不骄不躁,安稳顺心。
作者:菜鸟-传奇
本文版权归作者和博客园共有,重在学习交流,不以任何盈利为目的,欢迎转载。
敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。