一 Spark存储架构

Spark的存储采用主从(Master/Slave)模式,使用RPC进行消息通信。

Master主要负责整个应用程序在运行期间block元数据的管理和维护,Slave主要负责将本地数据块的状态的汇报给Master;而且接收Master传过来的执行指令,比如获取数据块状态,删除RDD/数据块等。

在Driver端只有一个BlockManagerMaster负责管理和维护集群block元数据,并且给Executor的BlockManager下达一些操作指令;Driver端BlockManagerMaster需要通过消息体BlockManagerMasterEndpoint进行通信,比如和Executor端进行通信;实例化Driver端的BlockManager用于Driver获取内存状态,存储状态等,会创建一个BlockManagerSlaveEndpoint终端用于和master通信

每个Executor在启动的时候,也会初始化BlockManager,进行block的写入,释放task所有的锁等; 在初始化BlockManager的时候,会创建一个BlockManagerSlaveEndpoint终端用于和master通信。

二 Spark存储的工作流程

2.1 应用程序启动,创建SparkContext

2.2 SparkContext初始化过程中会创建BlockTransferService、BlockManagerMaster、BlockManagerMasterEndpoint 以及Driver端BlockManger和BlockManagerSlaveEndpoint

2.3 SparkContext初始化BlockManager,即调用BlockManager的initialize方法

2.4 BlockManager初始化的时候,就会向BlockManagerMaster注册

2.5 CoarseGrainedExecutorBackend里当接收到RegisteredExecutor消息时,就会创建Executor,用于执行task

2.6 Executor会根据是否在driver所在节点,如果不是driver所在节点,则需要创建BlockManager和BlockManagerSlaveEndpoint,并且向Master注册;如果是就不用创建了,因为已经创建过了。

2.7 当task任务执行完毕,则需要通过BlockManger并根据持久化级别将数据写入磁盘或者内存。如果StorageLevel == DISK_ONLY,则通过DiskStore将block写入磁盘;如果StorageLevel == MEMORY_ONLY,则通过MemoryStore将block缓存到内存。

2.8 当使用内存存储时,需要取决于配置参数spark.memory.useLegacyMode,如果是true,则使用spark1.6之前的内存管理模式StaticMemoryManager;如果是fasle,则使用新的Unified

MemoryManager。

这两者的区别:

Executor的内存界限分明,分别由3部分组成:execution,storage和system。

StaticMemoryManager:对各部分内存静态划分好后便不可变化

UnifiedMemoryManager:淡化了execution空间和storage空间的边界,让它们之间可以相互借内存

所以StaticMemoryManager在有时候会存在内存资源浪费问题,而UnifiedMemoryManager更加高效的使用了内存

spark基础之存储原理相关推荐

  1. CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)

    CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...

  2. spark on yarn 完全分布式_Spark编程笔记(1)-架构基础与运行原理

    引言 根据IBM前首席执行官郭士纳的观点,IT领域每隔十五年就会迎来一 次重大变革 .当前我们正处于第三次信息浪潮(2010年前后),物联网.云计算和大数据技术突飞猛进. 信息爆炸是我们当前所需要解决 ...

  3. Spark广播变量实现原理及基础编程

    Spark广播变量实现原理及基础编程 实现原理 广播变量用来高效分发较大的对象.向所有工作节点发送一个较大的只读值,以供一个或多个 Spark 操作使用.比如,如果你的应用需要向所有节点发送一个较大的 ...

  4. (一)DDR 基础介绍——(演进、构成、存储原理)

    文章目录 一.DDR的演进变化 二.DDR的内存组成 三.DDR的内存原理   我们常说的DDR,亦即DDR SDRAM,指的是PC端或者消费电子(手机,平板)中的内存,是 "Double ...

  5. Spark SQL架构工作原理及流程解析

    Spark SQL架构工作原理及流程解析,spark sql从shark发展而来,Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析.逻辑执行计划翻译.执行计划优化等逻辑. Sp ...

  6. Spark大数据技术与应用 第一章Spark简介与运行原理

    Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰·扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目,经过开源后捐赠给Aspache软件基金会 ...

  7. Apache Spark基础知识

    我的spark学习笔记,基于Spark 2.4.0 目录 一.简介 二.RDD编程 1 RDD介绍 2 RDD操作 2.0 读操作 2.1 常用Tramsformation算子 2.2 常用Actio ...

  8. 分布式机器学习之——Spark MLlib并行训练原理

    这里是 王喆的机器学习笔记 的第二十五篇文章.接下来的几篇文章希望与大家一同讨论一下机器学习模型的分布式训练的问题.这个问题在推荐.广告.搜索领域尤为突出,因为在互联网场景下,动辄TB甚至PB级的数据 ...

  9. MongoDB内部的存储原理

    基础篇(能解决工作中80%的问题): MongoDB的概述.应用场景.下载方式.连接方式和发展历史等 MongoDB数据类型.重要概念以及shell常用指令 MongoDB文档的各种增加.更新.删除操 ...

最新文章

  1. 活着不容易!几度被扼杀又雄起的NLP简史
  2. 第十六届全国大学生智能车竞赛全国总决赛线上比赛规范
  3. Effective C++: noexcept
  4. 爬虫python 科研有用吗_为什么说用python写爬虫有优势?
  5. python计算precision,recall,f1-score
  6. php post fsockopen,php_fsockopen_post
  7. 奥特曼系列服务器芝庞顿,奥特曼:黑田笔下的怪兽,芝庞顿引人注目,五帝王造型诠释霸气...
  8. 如何完整卸载wxpython_TextCtrl的WXPython C++部分被删除
  9. php安装redis扩展‘checking for igbinary includes... configure: error: Cannot find igbinary.h‘解决方法
  10. 最全的常用正则表达式大全
  11. 亟待学习的内容 提醒贴
  12. 二叉树插入算法的非递归版本
  13. opencv如何获取图像的平均颜色
  14. 显卡ai性能测试软件,让AI帮助您自动超频。 Zotac RTX 2080Ti显卡性能测试
  15. eclipse新建java项目隐藏了bin文件夹,只有src文件夹,解决方法
  16. Flink1.15源码阅读flink-clients客户端执行流程(阅读较枯燥)
  17. Vscode 自动保存以及保存格式
  18. 计算机专业里的麦课尔雅,艺术导论超星尔雅网课答案2020年_高校邦_计算机文化基础_章节答案...
  19. 衢州计算机网络技术,衢州广播电视大学计算机网络技术专业_浙江报名_网络教育计算机网络技术专业教学计划_中国教育在线...
  20. A4988电机驱动简单使用

热门文章

  1. oracle if 使用函数,Oracle 常见函数用法
  2. css3切角文本框_CSS3:linear-gradient切角画册
  3. Vue之单文件组件和脚手架
  4. Go 语言基础(三)——基本数据类型
  5. SpringMVC入门(一)之HelloWorld(IDEA版)
  6. java返回链表的中间结点_876. 链表的中间结点
  7. java excel 多个sheet_Java Excel导出多个工作表(添加多个sheet)
  8. git配置中文乱码_解决git中文乱码问题
  9. emmc linux 识别分区_EMMC芯片电视主板直写厂家引导程序
  10. 特征筛选4——斯皮尔曼相关系数筛选特征(单变量筛选)