BlockManager原理解析
来源:互联网 发布:淘宝自动纸箱封箱机 编辑:程序博客网 时间:2024/06/03 21:30
一、BlockManager运行实例观察
从Application启动的角度来观察BlockManager;
1,在Application启动时会在SparkEnv中注册BlockManagerMaster以及MapOutputTracker,其中
a) BlockManagerMaster:对整个集群的Block数据进行管理的;
b) MapOutputTracker:跟踪所有mapper的输出的;
2,BlockManagerMasterEndpoint本身是一个消息体,会负责通过远程消息通信的方式去管理所有节点的BlockManager;
3,每启动一个ExecutorBackend都会实例化BlockManager并通过远程通讯的方式注册给BlockManagerMaster;实质上是Executor中的BlockManager在启动的时候注册给了Driver上的BlockManagerMasterEndpoint;
4,MemoryStore是BlockManager中专门负责内存数据存储和读写的类;
5,DiskStore是BlockManager中专门负责基于磁盘的数据存储和读写的类;
6,DiskBlockManager:管理LogicBlock与Disk上的Physical Block之间的映射关系并负责磁盘的文件的创建、读写等;
从Job运行的角度来观察BlockManager;
1,首先通过MemoryStore才存储广播变量;
2,在Driver中是通过BlockManagerInfo来管理集群中每个ExecutorBackend中BlockManager中的元数据信息的;
3,当改变具体的ExecutorBackend上的Block信息后就必须发消息给Dirver中的BlockManagerMaster来更新相应的BlockManageInfo;
4,当执行第二个Stage的时候,第二个Stage会向Dirver中的MapOutputTrackerMasterEndpoint发消息请求上一个Stage中相应的输出,此时MapOutputTrackerMaster会把上一个Stage的输出数据的元信息发送当前请求的Stage;
相应的日志信息:
16/02/14 20:47:15 INFO Spark.MapOutputTrackerMasterEndpoint: Asked to send map output locations for shuffle 0 to Worker3:4596516/02/14 20:47:15 INFO spark.MapOutputTrackerMaster: Size of output statuses for shuffle 0 is 218 bytes16/02/14 20:47:15 INFO storage.BlockManagerInfo: Added broadcast_2_piece0 in memory on Worker4:46458 (size: 22.6 KB, free: 2.7 GB)16/02/14 20:47:15 INFO spark.MapOutputTrackerMasterEndpoint: Asked to send map output locations for shuffle 0 to Worker4:57697
- BlockManager原理解析
- BlockManager架构原理源码解析
- 【源码解析】BlockManager详解
- [spark] BlockManager 解析
- BlockManager原理和源码解密
- BlockManager
- BlockManager
- BlockManager原理剖析与源码分析
- Blockmanager解密
- 第38课: BlockManager架构原理、运行流程图和源码解密
- 38 Sparkcore中的BlockManager
- 39 BlockManager深入理解
- Spark blockmanager架构
- Spark分析之BlockManager
- 10.BlockManager源码分析
- BlockManager初始化和注册,BlockManager核心方法详解
- BlockManagerMaster对BlockManager的管理
- spark core 2.0 BlockManager putBlockData
- 561. Array Partition I
- 2017.6.5 YY的GCD 失败总结
- sort与lambda
- 【Hash】【二分查找】17.6.3 集合 题解
- 回溯法0-1背包问题
- BlockManager原理解析
- Selenium Firefox Python错误can't access dead object?
- Java + 线程系列之线程的生命周期(三)
- 128. Longest Consecutive Sequence (哈希表结构的使用)
- 使用Tesseract-OCR识别图片上的中文
- 【Ctrl】 + 【Alt】 + 【F1~F6】 和 【Ctrl】 + 【Alt】 + 【T】打开的终端有什么不同?
- Node.js与包管理工具npm
- PHP操作mysql数据库总结
- Raspberry_pi允许mysql远程连接