美文网首页
spark BlockManager 解析

spark BlockManager 解析

作者: 邵红晓 | 来源:发表于2019-10-14 19:39 被阅读0次
  • 问题: spark Broadcast 广播变量存储在哪?存储在block manager上
    driver端:blockmanager master
    executor端:blockmanager slave
    典型主从结构的block管理集群
  • block manager 还存储了什么数据?
    RDDBlockId(rdd 缓存,cache presist)、ShuffleBlockId、ShuffleDataBlockId、ShuffleIndexBlockId、BroadcastBlockId、TaskResultBlockId、TempLocalBlockId、TempShuffleBlockId 8 个,spark streaming 一个 ReceiverInputDStream 接受到的数据也是先放在 BlockManager 中, 然后封装为一个 BlockRdd 进行下一步运算的。
  • block manager 结构
    1、MemoryStore 内存写入操作
    2、DiskStore 磁盘写入操作


    image.png

    block读取流程:

  • 优先从本地获取,根据StorageLevel设置,如果是存储在内存中,则从本地的MemoryStore中查询,存在则读取并返回;如果是存储在磁盘上,则从本地的DiskStore中查询,存在则读取并返回。
  • 本地不存在, 则会从远程的Executor读取,向远程的Driver上的BlockManagerMasterEndpoint查询对应Block ID,有哪些Executor已经保存了该Block数据,Dirver返回一个包含了该Block数据的Location列表,如果对应的Location信息与当前ShuffleMapTask执行所在Executor在同一台节点上,则会优先使用该Location,因为同一节点上的多个Executor之间传输Block数据效率更高
    注意:广播变量的 block 不会汇报给 Master

相关文章

网友评论

      本文标题:spark BlockManager 解析

      本文链接:https://www.haomeiwen.com/subject/mnxdmctx.html