首页 > 其他分享 >MapReduce和Yarn原理

MapReduce和Yarn原理

时间:2023-05-22 20:45:49浏览次数:41  
标签:ReduceTask MapReduce MapTask 调度 任务 Yarn 原理 资源

MapReduce原理

 

问题1. 什么是计算, 什么是分布式计算?

答案: 计算指的是从海量数据中提取出有效的价值信息的过程(广义上解释), 狭义上指的是 1 + 1 = 2 即: 数学运算. 分布式计算指的是 多台机器协调, 共同完成同1个计算任务.

问题2: 分布式计算的两种模式?

答案: 分散汇总模式: 大家各自做各自的, 最后交由主节点汇总. 例如: MR程序就属于这种. 中心化模式, 步骤执行: 由老大(主节点)统筹安排各机器的计算任务, 第一步, 第二步等..., 最后将结果交由主节点汇总.

问题3: 那么是不是所有的场景都适合用分而治之呢?

我们知道MR是一种分布式计算架构, 采用的是 分而治之 的思想,

答案: 不一定, 看需求, 如果把大任务拆分成n个小任务之后, 小任务之间的依赖度比较高的情况下, 就不适合用分而治之思想. 例如: 求平均数.(1-7所有数的和,如1+2 交给一台机器,2+3交给一台机器,最后汇总求平均会变成4.3333,而1+2+...+7=28/7=4)

问题4: 请简述MR的核心八步?

答案:

  1. 定义输入组件, 负责读取数据源. 逐行读取.

  2. 自定义MapTask任务, 负责 分.

  3. 分区.

  4. 排序.

  5. 规约.

  6. 分组.

  7. 自定义ReduceTask任务, 负责 合.

  8. 定义输出组件, 将结果写到目的地文件中.

MR核心8步:

1.定义输入组件,负责读取源文件,获得K1, V1 K1:行偏移量,表示从哪开始读,V1:整行数据.

2.自定义MapTask任务,负责拆分的动作,获得K2, V2

1个切片= 1个MapTask任务, 切片大小默认和Block块大小-致. K2:单词,V2: 单 词的次数,默认记录为1.

3.分区,给数据打标记的,标记将来被哪个ReduceTask任务处理。

4.排序,默认按照字典顺序,按照K2进行升序排列.

5.规约,对MapTask端的数据做局部合并的,降低Reduce拉取的数据量,

6.分组,默认按照K2进行分组,K2一致的数据,会被放到一起。

7.自定义ReduceTask任务,负责合并的动作,获得K3, V3

1个分区= 1个ReduceTask任务, K3:单词,V3:单词总数.

8.定义输出组件,将结果写到目的地文件中。

问题5: 请简述MR程序的执行流程?

提示 1,切片,MapTask

2,MapTask扫描,放入环形缓冲区

3,满则溢,分排规,存磁盘

4,小文件合并

5,ReduceTask拷贝数据

6,ReduceTask对数据进行合并,排序

7,ReduceTask写磁盘

答案:

  1. MR程序分为MapTask阶段 和 ReduceTask阶段, 且: 1个切片 = 1个Block块 = 1个MapTask任务 = 1个分好区, 排好序, 规好约的文件. 1个分区 = 1个ReduceTask任务 = 1个结果文件.

  2. 先对文件切片, 每个片的大小默认和Block块大小一致(即: 128MB), 且每个切片的数据会交由1个MapTask任务来处理.

  3. MapTask任务采用逐行的方式从切片中读取数据, 逐行处理, 且会将处理后的数据放到环形缓冲区(默认大小:100MB, 溢写比:0.8)

  4. 当环形缓冲满(80MB)的时候, 会触发溢写线程(spill), 对该部分数据做分区, 排序, 规约的操作, 然后存储到磁盘上(小文件)

  5. 对上述的小文件进行合并(默认: 10个一合并), 获取最终的文件, 即: 1个MapTask = 1个分好区, 排好序, 规好约的文件.

  6. 当MapTask任务执行结束后, ReduceTask会开启1个拷贝线程, 从各个MapTask的结果文件中, 拷贝属于自己的数据(根据分区编号识别).

  7. ReduceTask对数据进行合并, 排序的操作, 获取最终结果数据.

  8. ReduceTask将处理好的结果数据写到磁盘文件中, 1个ReduceTask = 1个结果文件, 至此, MR程序执行结束.

Yarn原理

问题1: 什么是资源?

答案: 资源指的是硬件资源, 例如: CPU, 内存, 磁盘, 声卡, 网卡, 显卡...

问题2: 什么是调度, 目的是什么?

答案: 调度指的是当程序执行的时候, 所需资源有我们来集中管理分配, 目的是: 提高资源利用率.

问题3: 我们知道Yarn是大数据分布式集群 统一任务接收 和 资源调度器, 怎么理解统一呢?

答案: Yarn是负责调度计算任务的, 至于计算任务是什么, Yarn根本就不关心, 只要符合Yarn规范即可. 即: 无论是MapReduce计算任务, Spark计算任务, Flink计算任务, Yarn都能调度.

问题4: Yarn架构角色介绍 及 功能?

答案: Yarn属于大数据分布式集群统一任务接收和资源调度器, 由ResourceManager 和 NodeManager两种角色组成. ResourceManager作用:

  1. 负责管理整个集群的资源.

  2. 负责任务的接收.

  3. 负责资源的调度 和 分配. NodeManager作用:

  4. 管理本机的资源.

  5. 负责具体任务的执行. 所谓的管理资源, 其实就是开辟容器空间, 也叫: 资源空间, 资源容器(Container).

问题5: 请简述Yarn调度MR程序的流程? 也可能问: Yarn调度job(计算任务)流程.

流程如下:

1.客户端提交计算任务(例如:MR任务,Spark任务, Flink任 务等)给到Resour ceManager.

  1. ResourceManager校验任务合法后,会找一台nodemanager节点,创建AppMaster进程. 细节: 1个计算任务= 1个AppMaster进程。

  1. ApMaster进程会和Resour ceManager建立心跳机制,并通过心跳包的方式获取到要执行的计算任务的信息,之后会计算执行该任务所需的资源。

  2. AppMaster找Resour ceManager申请执行该计算任务所需的资源.

  3. Resour celManager接收到AppMaster的请求后,会找一些nodemanager,在其上创建一些Container资源容器, ”占用"资源,用于执行该计算任务,

  1. AppMaster会连接到nodemanager,从而找到这些Container资源容器.

  2. AppMaster会让计算任务在Container资源容器中执行,并实时监听它们(计算任务) 的状态,当MapTask任 务执行结束后,AppMaster 会通知ReduceTask开始执行,当ReduceTask执行结束后,整个计算任务就做完了。

  1. AppMaster会将该计算任务的结果返回给ResourceManager,并通知ResourceManager可以释放该计算任务的Container資源了,并启动自毁,至此,整个流程结束。

关键词: 请求,AppMaster,心跳,申请资源,Container资源容器, 实时监听,返回,自毁

问题6: 请简述你对Yarn的三种调度策略的理解?

答案: FIFO Scheduler: 先进先出调度器, 类似于: 单车道, 目前几乎不用. 优点: 每个计算任务都独享集群 100%的资源. 缺点: 当小任务前有大任务在执行时, 小任务可能迟迟无法执行结束, 必须等待大任务执行完毕.

Capacity Scheduler: 容量调度器, 类似于: 多车道. Apache Hadoop(社区版)默认用的调度策略. 优点:

  1. 支持多任务并行执行.

  2. 且支持资源借调. 缺点:

  3. 可能存在资源无法归还的情况.

  4. 存在资源浪费的情况, 即: 任务无法独享集群100%的资源.

Fair Scheduler: 公平调度器, 类似于: 潮汐车道.最早是由FaceBook研发的, 后续我们要用的 商业版Hadoop, Yarn的调度策略就是这一种. 优点:

  1. 支持多任务并行执行.

  2. 且支持资源借调. 当有第1个任务执行的时候, 它独占集群100%的资源, 当有第2个任务执行的时候, 它(第1个任务)会分一半的资源给到第2个任务. 第有第3个任务执行的时候, 会再分一半的资源出去, 即: 三个任务的资源使用率都是 33.333%... 缺点: 当有大量小任务执行的时候, 存在大任务迟迟无法执行结束的情况.

  3.  

标签:ReduceTask,MapReduce,MapTask,调度,任务,Yarn,原理,资源
From: https://www.cnblogs.com/liam-sliversucks/p/17421675.html

相关文章

  • (笔记)运放电路中并联反馈电容与反馈电阻的工作原理
     一、反馈电容运放反馈端电容并电阻,或许很多人都有疑惑;不同频率的信号经过电容都会产生不同程度的相移和衰减。 如果你利用的是其衰减,那么就是滤波。 如果你利用的是其相移,那么就是补偿。  (图一:反馈电容/电阻示意图)CF的作用:相位补偿,防止振荡,抑制高频噪声:一般来说,因为布......
  • 第三回:数据何所依,硬盘话原理
    公众号原文前情回顾:《第一回:天才闯秘境,绝地寻生机》上回说到,阿飞从混沌中醒来,意外发现自己的大脑被数据化存储到了一台计算机内存中,根据神秘声音的指示,他需要赶紧联系网卡找到自己大脑的另一半然后逃离这里。不料内存却告诉他,如果不赶紧把自己持久化存储起来,一旦计算机关闭他就会......
  • 一个故事看懂内存条工作原理
    微信公众号我是内存条我是一个内存条,刚刚从深圳的一个工厂里被生产出来,跟我一起的还有一批小伙伴,长得跟我一模一样,下了流水线后我们就被扔进了一处黑暗的角落。“这是哪里啊,黑漆漆的”,一个小伙伴说到。“这里是内存条仓库”,黑暗中有人在说话,声音中略有一丝沧桑,像是一个老头。“谁......
  • AOP-基本概念以及底层原理(JDK动态代理实现)
    1.什么是AOP1.面向切面编程(面向方面),利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率2.通俗描述:不通过修改源代码方式,在主干功能里添加新功能 AOP(底层原理) 1.AOP底层使用到了动态代理1.两......
  • 计算机组成原理:控制器实验
    实验名称:4控制器实验实验目的掌握微程序控制器的组成原理。掌握微程序的编制、写入,观察微程序的运行过程。基于数据通路图,掌握微程序控制器的工作原理。基于微程序流程图,掌握微程序控制器的工作原理。基于信号时序图,掌握微程序控制器的工作原理。掌握一个简单CPU的组成......
  • 计算机组成原理:运算器实验
    实验名称:1.1基本运算器实验实验目的了解运算器的组成结构。基于数据通路图,观测并分析运算器的工作原理。基于信号时序图,观测并分析运算器的工作原理。实验设备PC机一台,TDX-CMX实验系统一套。实验预习学习使用TDX-CMX实验台,然后回答下列问题。实验台上“时序与......
  • 计算机组成原理:阵列乘法器设计实验
    实验名称:1.2阵列乘法器设计实验实验目的了解运算器的组成结构。基于数据通路图,观测并分析运算器的工作原理。基于信号时序图,观测并分析运算器的工作原理。实验设备PC机一台,TDX-CMX实验系统一套。实验预习画出4*4阵列乘法器原理图,分析延迟与哪些因素有关。答:(上传图片......
  • 计算机组成原理:存储器实验
    实验名称:2存储器实验实验目的掌握静态随机存储器RAM工作特性及数据的读写方法。基于信号时序图,了解读写静态随机存储器的原理。掌握Cache的原理及其设计方法。熟悉FPGA应用设计及EDA软件的使用。实验设备PC机一台,TDX-CMX实验系统一套。实验预习静态随机存储器实验1......
  • 计算机组成原理:系统总线与总线接口实验
    实验名称:3.系统总线与总线接口实验实验目的理解总线的概念及其特性。掌握控制总线的功能和应用。理解总线的功能和和典型工作流程。掌握在总线上协调ALU和外设交换数据的方法。实验设备PC机一台,TDX-CMX实验系统一套。实验预习1、阅读实验指导书,然后回答问题。本实......
  • RocketMQ事务消息原理
    一、RocketMQ事务消息原理:        RocketMQ在4.3版本之后实现了完整的事务消息,基于MQ的分布式事务方案,本质上是对本地消息表的一个封装,整体流程与本地消息表一致,唯一不同的就是将本地消息表存在了MQ内部,而不是业务数据库,事务消息解决的是生产端的消息发送与本地事务执行......