BlockManager原理剖析与源码分析

这里写图片描述

  • BlockManager 会运行在 driver 和 Executor 上面,在 driver 上面的 BlockManager
    是负责管理整个集群所有 Executor 中的 BlockManager,BlockManager 本身也是 Master-Slave
    结构的,所谓Master-Slave 结构就是一切的调度和工作都是由 Master 去触发的,Slave本身就是专注于干活的,而
    Executor 在启动的时候,一定会实例化 BlockManager。
  • 基于应用程序的 AppId 去初始化 BlockManager,这个 initialize 方法也会启动
    BlockTransferService 和 ShuffleClient,同时注册 BlockManagerMaster,启动
    BlockManagerWorker endpoint,当 Executor 实例化的时候会通过
    BlockManager.initialize 来实例化 Executor 上的 BlockManager 并且会创建
    BlockManagerSlaveEndpoint 这个消息循环体来接受 Driver 中的 BlockManagerMaster
    发过来的指令,例如删除 Block 的指令。 当 BlockManagerSlaveEndpoint 实例化后,Executor 上的
    BlockManager 需要向 Driver 上的 BlockManagerMasterEndpoint 注册

  • 发送消息到 BlockManagerSlaveEndpoint

  • BlockManagerMasterEndpoint 接受到 Executor 上的注册信息并进行处理,每一个 BlockManager 都会对应一个 BlockManagerInfo,然后通过 executorId 看看能不能找到
    BlockManagerId,BlockManagerMaster 包含了集群中整个 BlockManager
    注册的信息。经过了这几个步骤后完成了注册的工作,这跟 Spark-Shell 启动时的日志信息是一致的。

  • BlockManagerMaster 只有一个 dropFromMemory 是指当我们内存不够的话,我们尝试释放一些内存给要使用的应用程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值