https://www.cnblogs.com/liuliliuli2017/p/6809094.html
Spark Streaming运行原理
spark程序是使用一个spark应用实例一次性对一批历史数据进行处理,spark streaming是将持续不断输入的数据流转换成多个batch分片,使用一批spark应用实例进行处理。
从原理上看,把传统的spark批处理程序变成streaming程序,spark需要构建什么?
需要构建4个东西:
一个静态的 RDD DAG 的模板,来表示处理逻辑;
一个动态的工作控制器,将连续的 streaming data 切分数据片段,并按照模板复制出新的 RDD ;
DAG 的实例,对数据片段进行处理;
扫描二维码关注公众号,回复: 8459819 查看本文章Receiver进行原始数据的产生和导入;Receiver将接收到的数据合并为数据块并存到内存或硬盘中,供后续batch RDD进行消费;
对长时运行任务的保障,包括输入数据的失效后的重构,处理任务的失败后的重调。
具体streaming的详细原理可以参考广点通出品的源码解析文章:
对于spark streaming需要注意以下三点:
- 尽量保证每个work节点中的数据不要落盘,以提升执行效率。
- 保证每个batch的数据能够在batch interval时间内处理完毕,以免造成数据堆积。
- 使用steven提供的框架进行数据接收时的预处理,减少不必要数据的存储和传输。从tdbank中接收后转储前进行过滤,而不是在task具体处理时才进行过滤。