Spark---Reciever
来源:互联网 发布:地球为什么会自转 知乎 编辑:程序博客网 时间:2024/05/18 02:14
总体过程
首先ReceiverSupervisor启动,继而启动BlockGenerator和Receiver,其中BlockGenerator首先启动一个定时器定时将接收的数据封装成Block,然后启动一个线程不断将Block数据推送给BlockManager。而Receiver启动后不断接收数据,并不断将接受的数据添加到BlockGenerator中,这样BlockGenerator就不断将Receiver接收的数据推送到BlockManager
Spark Streaming 在集群启动Receiver的时候会先在Executor中启动ReceiverSupervisor来管理Receiver,ReceiverSupervisor的启动是通过调用他的start方法完成的。
BlockGenerator过程
BlockGenerator最终调用pushAndReportBlock方法用来存储接收的的数据Block并将元数据汇报给ReceiverTracker
Receiver 启动
首先调用了onReceiverStart方法,将Receiver注册给ReceiverTracker,重点看代码rever.onStart(),调用了receiver的onStart方法
以SocketReceiver为例:onStart()方法先给创建了一个Socket对象赋值给了socket,然后启动了一个后台进行“Socket Receiver” ,在后台进程的run方法中调用了receive()方法进行数据接收
SocketReceiver的receive()方法不断从socket接收数据,然后调用store方法进行存储。
此处再次回到ReceiverSupervisor,调用了其中的pushSingle函数:
最终调用了BlockGenerator的addData方法
可以看到BlockGenerator的addData方法将数据添加到currentBuffer中,然后blockIntervalTimer会每个200毫秒从currentBuffer取出数据封装成Block,并将Block添加到blockForPushing队列,blockPushingThread会将blockForPushing队列中的block推送给BlockManager。至此Receiver运行流程分析完毕。
参考:Spark Streaming源码分析:Receiver数据接收全过程详解
-
- Spark---Reciever
- Broadcast Reciever的使用
- Citirx reciever 客户端添加帐户
- 源码记录一:activity与application,service,reciever中的context启动activity为什么不一样。
- spark
- spark
- Spark
- spark
- Spark
- spark
- Spark
- Spark
- spark
- Spark
- SPARK
- Spark
- Spark
- Spark
- 反射
- Hadoop 环境搭建和配置
- ROS学习整理
- Android加载本地网页
- java 模拟http请求(跨域解决方案)
- Spark---Reciever
- SDUT-3402
- linux鸟哥视频学习笔记04
- PropertyInfo的使用
- POJ-3107-Godfather
- HTTP 方法:GET 对比 POST
- Nuttx操作系统用户手册(阅读记录)(翻译)
- 高斯消元-解求精技术(Python)
- codeforces 894E