摘要:BlockManager 是 spark 中至关重要的一个组件,在spark的运行过程中到处都有 BlockManager 的身影,只有搞清楚 BlockManager 的原理和机制,你才能更加深入的理解 spark。

§ BlockManager是什么?

  • BlockManager的作用?我理解是负责做RDD的存储,如何存下来给后续任务去使用。
    其内部模块图如下:

  • 图中看到有个memoryStore和DiskStore,说明把block做存储时,有内存和磁盘2种方式,存储后就都i通过这个Store去管理。
  • 存储时以Block为单位,所以会有个映射用的数组
  • 有一个负责和Driver的BlockManagerMaster通信的引用接口
  • 还有个shuffClient,负责做 备份 和 下载, 即各executor之间会通过shuffClient来做block的传输。

§ BlockManager和Driver、executor的关系

其关系如图:

从中可以看到

  1. blockManagerMaster在driver端生成
  2. executor中生成blockManager,并负责向BMM注册。
  3. spark中注册消息通过ActorSystem进行发送

§ 把块block 存入blockManager的流程

比如特殊的2个地方:

  1. 试图put时,会先看下该blockId是否有缓存,有的话直接取过来,否则就重新创建blockInfo
  2. 存储时会先判断内存是否充足,充足就写入memoryStore,如果不够会先释放再尝试放入。

§ 从blockManager中删除块

删除的操作没什么特别的,主要是会判断一下块的存储级别,选择从不同的store中取块。

§ shuffClient 下载block操作

BMMAC就是BlockManagerMasterActor,我当初瞎写的简称

  • 注意点:当要取的块来自好几个BlockManager时, 把它打乱顺序,避免好几个BM同时从某一个BM上下载数据!

§ shuffeClinet的备份操作

  • BM为什么要备份他的block?书里作者没解释,我的理解是为了防止节点崩溃或者丢失,导致中间任务无法继续执行?
  • 因为其他的BlockManager能接收的block可能有限,所以备份时可能会涉及多个block, 每次我们一样,从BMmaster那里拿一个 ***随机***的blockManager做备份,避免都往同一个上备份。

§ BlockManager和Executor、driver的关系:

从中可以看到

  1. blockManagerMaster在driver端生成
  2. executor中生成blockManager,并负责向BMM注册。
  3. spark中注册消息通过ActorSystem进行发送

点击关注,第一时间了解华为云新鲜技术~

Spark的分布式存储系统BlockManager全解析的更多相关文章

  1. 对话DDM:分布式数据库中间件全解析

    进入云计算时代,传统的数据库在性能和容量等方面已无法满足企业的要求,随着数据量的不断骤增,易于扩展.拆分的数据库解决方案对于企业的云化转型更是显得尤为重要.为使企业应用上云更简单,分布式数据库中间件D ...

  2. 《SPARK/TACHYON:基于内存的分布式存储系统》-史鸣飞(英特尔亚太研发有限公司大数据软件部工程师)

    史鸣飞:大家好,我是叫史鸣飞,来自英特尔公司,接下来我向大家介绍一下Tachyon.我事先想了解一下大家有没有听说过Tachyon,或者是对Tachyon有没有一些了解?对Spark呢? 首先做一个介 ...

  3. spark的存储系统--BlockManager源码分析

    spark的存储系统--BlockManager源码分析 根据之前的一系列分析,我们对spark作业从创建到调度分发,到执行,最后结果回传driver的过程有了一个大概的了解.但是在分析源码的过程中也 ...

  4. [转载] 360分布式存储系统Bada的设计和应用

    原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=208931479&idx=1&sn=1dc6ea4fa28a ...

  5. 高性能、高容错、基于内存的开源分布式存储系统Tachyon的简单介绍

    Tachyon是什么? Tachyon是一个高性能.高容错.基于内存的开源分布式存储系统,并具有类Java的文件API.插件式的底层文件系统.兼容Hadoop MapReduce和Apache Spa ...

  6. (转)ASP.NET缓存全解析6:数据库缓存依赖

    ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...

  7. Git全解析之用起来先

    文章目录 1. Git全解析之用起来先 1.1. 先安装Git环境 1.2. 配置 1.3. 简单了解Git 1.3.1. Git对象模型 SHA 1.3.2. Git目录与工作目录 1.4. 可以开 ...

  8. Git全解析之远程仓库交互

    文章目录 1. Git全解析之远程仓库交互 1.1. 中央仓库的概念 1.2. 本地分支与远程分支 1.3. pull与fetch 1.4. 关于捐赠 Git全解析之远程仓库交互 中央仓库的概念 虽然 ...

  9. 5.spark弹性分布式数据集

    弹性分布式数据集 1 Why Apache Spark 2 关于Apache Spark 3 如何安装Apache Spark 4 Apache Spark的工作原理 5 spark弹性分布式数据集 ...

  10. 分布式存储系统-HBASE

    简介 HBase –Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBse技术可在廉价PC Server上搭建起大规模结构化存储集群.HBase利用Had ...

随机推荐

  1. linux知识点 ROM,RAM,SRAM,DRAM,Flash

    参考视频:https://www.bilibili.com/video/BV13L4y1b7So?spm_id_from=333.337.search-card.all.click SRAM,DRAM ...

  2. CF451B

    题目简化和分析: 这题就是判断将一段翻转后是否能变为升序的数组. 我的方法是保存原数组每一个数出现的位置(相同任意一个),让后另外用一个数组存储排好序后的原数组,逐一进行比较. 若同,则跳到下一个元素 ...

  3. 12. 用Rust手把手编写一个wmproxy(代理,内网穿透等), TLS的双向认证信息及token验证

    12. 用Rust手把手编写一个wmproxy(代理,内网穿透等), TLS的双向认证信息及token验证 项目 ++wmproxy++ gite: https://gitee.com/tickbh/ ...

  4. MQ系列15:MQ实现批量消息处理

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...

  5. 【ZJCTF 2019】NiZhuanSiWei

    [ZJCTF 2019]NiZhuanSiWei 收获 file_get_contents绕过 include联想伪协议 熟悉__tostring魔术方法的使用 题目 代码: <?php $te ...

  6. C++基础杂记(1)

    结构体中的位字段 共用体 烦人的枚举 枚举的声明与赋值 枚举的取值范围与强制类型转换 枚举的注意事项 指针 为什么是 int* ptr 而不是 int *ptr ? 避免危险的指针 使用array和v ...

  7. linux其他命令(查找,软链接,打包和压缩,软件安装)笔记

    1,查找文件 *  是通配符,代表任意字符,0到多个. find 路径  -name  "*.txt"  : 查找在路径下所有以 .txt 结尾的文件. 2,软链接 (1)将桌面目 ...

  8. Redis项目搭建

    Redis项目搭建 Redis下载 搭建redis首先需要下载Redis,可是Redis官方并没有Windows安装,好在网上从不缺大牛,Github上可以找到Redis的Windows版 下载地址: ...

  9. HarmonyOS 高级特性

    引言 本章将探讨 HarmonyOS 的高级特性,包括分布式能力.安全机制和性能优化.这些特性可以帮助你构建更强大.更安全.更高效的应用. 目录 HarmonyOS 的分布式能力 HarmonyOS ...

  10. CatCatCat

    拿到题目没有思路,查看了题解 附件 放到kali中用string找flag,得到一个密钥,可以用来下面的解密 打开我养了-- 发现里面以U2F开头,结合txt名称"我养了一只叫兔子的91岁的 ...