Spark Storage ③ - Master 与 Slave 之间的消息传递与时机

本文为 Spark 2.0 源码分析笔记,某些实现可能与其他版本有所出入

再次重申标题中的 Master 是指 Spark Storage 模块的 Master,是运行在 driver 上的 BlockManager 及其包含的 BlockManagerMaster、RpcEnv 及 RpcEndpoint 等;而 Slave 则是指 Spark Storage 模块的 Slave,是运行在 executor 上的 BlockManager 及其包含的 BlockManagerMaster、RpcEnv 及 RpcEndpoint 等。下文也将沿用 Master 和 Slave 简称。

Master 与 Slaves 之间是通过消息进行通信的,本文将分析 Master 与 Slaves 之间重要的消息以及这些消息是在什么时机被触发发送的。

Master -> Slave

先来看看 Master 都会发哪些消息给 Slave

case class RemoveBlock(blockId: BlockId)

用于移除 slave 上的 block。在以下两个时机会触发:

  • task 结束时
  • Spark Streaming 中,清理过期的 batch 对应的 blocks

case class RemoveRdd(rddId: Int)

用于移除归属于某个 RDD 的所有 blocks,触发时机:

  • 释放缓存的 RDD

case class RemoveShuffle(shuffleId: Int)

用于移除归属于某次 shuffle 所有的 blocks,触发时机:

  • 做 shuffle 清理的时候

case class RemoveBroadcast(broadcastId: Long, removeFromDriver: Boolean = true)

用于移除归属于特定 Broadcast 的所有 blocks。触发时机:

  • 调用 Broadcast#destroy 销毁广播变量
  • 调用 Broadcast#unpersist 删除 executors 上的广播变量拷贝

接下来看看 Slaves 发送给 Master 的消息

Slave -> Master

case class RegisterBlockManager(blockManagerId: BlockManagerId ...)

用于 Slave(executor 端 BlockManager) 向 Master(driver 端 BlockManager) 注册,触发时机:

  • executor 端 BlockManager 在初始化时

case class UpdateBlockInfo(var blockManagerId: BlockManagerId, var blockId: BlockId ...)

用于向 Master 汇报指定 block 的信息,包括:storageLevel、存储在内存中的 size、存储在磁盘上的 size、是否 cached 等。触发时机:

  • BlockManager 注册时
  • block 被移除时
  • 原本存储在内存中的 block 因内存不足而转移到磁盘上时
  • 生成新的 block 时

case class GetLocations(blockId: BlockId)

用于获取指定 blockId 的 block 所在的 BlockManagerId 列表,触发时机:

  • 检查是否包含某个 block
  • 以序列化形式读取本地或远程 BlockManagers 上的数据时
    • 读取以 blocks 形式存储的 task result 时
    • 读取 Broadcast blocks 数据时
    • 获取指定 block id 对应的 block 数据(比如获取 RDD partition 对应的 block)

case class RemoveExecutor(execId: String)

用于移除已 lost 的 executor 上的 BlockManager(只在 driver 端进行操作),触发时机:

  • executor lost(一般由于 task 连续失败导致)

case object StopBlockManagerMaster

用于停止 driver 或 executor 端的 BlockManager,触发时机:

  • SparkContext#stop 被调用时,也即 driver 停止时

case object GetMemoryStatus

用于获取各个 BlockManager 的内存使用情况,包括最大可用内存以及当前可用内存(当前可用内存=最大可用内存-已用内存)


case object GetStorageStatus

用于获取各个 BlockManager 的存储状态,包括每个 BlockManager 中都存储了哪些 RDD 的哪些 block(对应 partition)以及各个 block 的信息


case class BlockManagerHeartbeat(blockManagerId: BlockManagerId)

用于 Slave 向 Master 发心跳信息,以通知 Master 其上的某个 BlockManager 还存活着


case class HasCachedBlocks(executorId: String)

用于检查 executor 是否有缓存 blocks(广播变量的 blocks 不作考虑,因为广播变量的 block 不会汇报给 Master),触发时机:

  • 检验某个 executor 是否闲置了一段时间,即一段时间内没有运行任何 tasks(这样的 executor 会慢慢被移除)

欢迎关注我的微信公众号:FunnyBigData

FunnyBigData
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容