一、第一代hadoop组成与结构

第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成,对应Hadoop版本为Hadoop 1.x和0.21.X,0.22.x。

1、MapReduce角色分配


Client :作业提交发起者。

JobTracker: 初始化作业,分配作业,与TaskTracker通信,协调整个作业。

TaskTracker:保持JobTracker通信,在分配的数据片段上执行MapReduce任务。

2、MapReduce执行流程

(1)提交作业

在作业提交之前,需要对作业进行配置

程序代码,主要是自己书写的MapReduce程序。

输入输出路径

其他配置,如输出压缩等。

配置完成后,通过JobClinet来提交

(2)作业的初始化

客户端提交完成后,JobTracker会将作业加入队列,然后进行调度,默认的调度方法是FIFO调试方式。

(3)任务的分配

TaskTracker和JobTracker之间的通信与任务的分配是通过心跳机制完成的。

TaskTracker会主动向JobTracker询问是否有作业要做,如果自己可以做,那么就会申请到作业任务,这个任务可以使Map也可能是Reduce任务。

(4)任务的执行

申请到任务后,TaskTracker会做如下事情:

拷贝代码到本地

拷贝任务的信息到本地

启动JVM运行任务

(5)状态与任务的更新

任务在运行过程中,首先会将自己的状态汇报给TaskTracker,然后由TaskTracker汇总告之JobTracker。

任务进度是通过计数器来实现的。

(6)作业的完成

JobTracker是在接受到最后一个任务运行完成后,才会将任务标志为成功。

此时会做删除中间结果等善后处理工作。

二、第二代hadoop组成与结构


第二代Hadoop,为克服Hadoop 1.0中HDFS和MapReduce存在的各种问题而提出的。针对Hadoop 1.0中的单NameNode制约HDFS的扩展性问题,提出了HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展;针对Hadoop 1.0中的MapReduce在扩展性和多框架支持方面的不足,提出了全新的资源管理框架YARN(Yet Another Resource Negotiator),它将JobTracker中的资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现,其中,ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序。对应Hadoop版本为Hadoop 0.23.x和2.x。

1、 yarn运行架构


YARN 是下一代Hadoop计算平台,如下所示:

在 YARN 架构中,一个全局ResourceManager 以主要后台进程的形式运行,它通常在一台独立机器上运行,在各种竞争的应用程序之间仲裁可用的集群资源。

ResourceManager会追踪集群中有多少可用的活动节点和资源,协调用户提交的哪些应用程序应该在何时获取这些资源。ResourceManager是惟一拥有此信息的进程,所以它可通过某种共享的、安全的、多租户的方式制定分配(或者调度)决策(例如,依据应用程序优先级、队列容量、ACLs、数据位置等)。

在用户提交一个应用程序时,一个称为ApplicationMaster的轻量型进程实例会启动来协调应用程序内的所有任务的执行。这包括监视任务,重新启动失败的任务,推测性地运行缓慢的任务,以及计算应用程序计数器值的总和。这些职责以前是分配给单个 JobTracker来完成的。ApplicationMaster和属于它的应用程序的任务,在受NodeManager控制的资源容器中运行。

NodeManager是TaskTracker的一种更加普通和高效的版本。没有固定数量的 map 和 reduce slots,NodeManager 拥有许多动态创建的资源容器。容器的大小取决于它所包含的资源量,比如内存、CPU、磁盘和网络 IO。目前,仅支持内存和 CPU (YARN-3)。一个节点上的容器数量,由节点资源总量(比如总CPU数和总内存)共同决定。

需要说明的是:ApplicationMaster可在容器内运行任何类型的任务。例如,MapReduce ApplicationMaster请求一个容器来启动map或reduce 任务,而 Giraph ApplicationMaster请求一个容器来运行Giraph任务。

我们还可以实现一个自定义的 ApplicationMaster 来运行特定的任务,进而发明出一种全新的分布式应用程序框架,改变大数据格局。

在YARN中,MapReduce降级为一个分布式应用程序的一个角色(但仍是一个非常流行且有用的角色),现在称为 MRv2。MRv2 是经典MapReduce引擎(称为 MRv1)的重现,运行在YARN之上。

2、YARN可运行任何分布式应用程序

ResourceManager、NodeManager 和容器都不关心应用程序或任务的类型。所有特定于应用程序框架的代码都会转移到ApplicationMaster,以便任何分布式框架都可以受 YARN 支持。

得益于这个一般性的方法,Hadoop YARN集群可以运行许多不同分布式计算模型,例如:MapReduce、Giraph、Storm、Spark、Tez/Impala、MPI等。

3、YARN中提交应用程序

下面讨论在应用程序提交到YARN集群时,ResourceManager、ApplicationMaster、NodeManagers和容器如何相互交互。下图显示了一个例子。

假设用户采用与MRv1中相同的方式键入hadoop jar命令,将应用程序提交到 ResourceManager。ResourceManager维护在集群上运行的应用程序列表,以及每个活动的 NodeManager上的可用资源列表。

ResourceManager 需要确定哪个应用程序接下来应该获得一部分集群资源。该决策受到许多限制,比如队列容量、ACL 和公平性。ResourceManager 使用一个可插拔的 Scheduler。Scheduler 仅执行调度;它管理谁在何时获取集群资源(以容器的形式),但不会对应用程序内的任务执行任何监视,所以它不会尝试重新启动失败的任务。

在 ResourceManager接受一个新应用程序提交时,Scheduler制定的第一个决策是选择将用来运行ApplicationMaster的容器。在 ApplicationMaster启动后,它将负责此应用程序的整个生命周期。首先也是最重要的是,它将资源请求发送到 ResourceManager,请求运行应用程序的任务所需的容器。

资源请求是对一些容器的请求,用以满足一些资源需求,比如:

  • 一定量的资源,目前使用MB内存和CPU份额来表示

  • 一个首选的位置,由主机名、机架名称指定

  • 此应用程序中的一个优先级,而不是跨多个应用程序

如果可能的话,ResourceManager 会分配一个满足ApplicationMaster在资源请求中所请求的容器(表达为容器 ID和主机名)。该容器允许应用程序使用特定主机上给定的资源量。分配一个容器后,ApplicationMaster会要求NodeManager(管理分配容器的主机)使用这些资源来启动一个特定于应用程序的任务。此任务可以是在任何框架中编写的任何进程(比如一个 MapReduce 任务或一个Giraph任务)。

NodeManager 不会监视任务;它仅监视容器中的资源使用情况,例如,如果一个容器消耗的内存比最初分配的更多,它会结束该容器。

ApplicationMaster会竭尽全力协调容器,启动所有需要的任务来完成它的应用程序。它还监视应用程序及其任务的进度,在新请求的容器中重新启动失败的任务,以及向提交应用程序的客户端报告进度。

应用程序完成后,ApplicationMaster 会关闭自己并释放自己的容器。

尽管ResourceManager不会对应用程序内的任务执行任何监视,但它会检查 ApplicationMaster的健康状况。如果 ApplicationMaster失败,ResourceManager 可在一个新容器中重新启动它。我们可以认为ResourceManager负责管理ApplicationMaster,而 ApplicationMasters负责管理任务。

分布式计算 MapReduce与yarn工作机制相关推荐

  1. Hadoop之Yarn工作机制详解

    Hadoop之Yarn工作机制详解 目录 Yarn概述 Yarn基本架构 Yarn工作机制 作业提交全过程详解 1. Yarn概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于 ...

  2. Yarn在MapReduce中的工作机制

    目录 前言: 1.YARN概述 2.mapreduce&yarn的工作机制 总结: 目录 前言: 在了解Yarn在MR中的作用的时候需要先了解Yarn是什么. 1.YARN概述 Yarn是一个 ...

  3. Yarn基本架构和工作机制

    Yarn基本架构和工作机制 概念 Yarn基本架构 ResourceManager (RM)作用 NodeManager (NM)作用 ApplicationMaster (AM)作用 contain ...

  4. hadoop--Yarn资源调度器的基础架构、工作机制 与 作业提交全过程

    目录 一.Yarn资源调度器 Yarn 基础架构 二.YARN工作机制 三.作业提交全过程 1. HDFS.YARN.MapReduce三者关系 2. 作业提交过程(YARN) 3. 作业提交过程(H ...

  5. 【Hadoop快速入门】Hdfs、MapReduce、Yarn

    1. Hahoop概述 1.1 Hodoop是什么 1) Hadoop是一个有Apache基金会所开发的分布式系统基础架构 2) 主要解决海量数据的存储和海量数据的分析计算问题 3) 广义上来说,Ha ...

  6. Yarn01:诞生背景、架构和工作机制介绍

    写在前面的总结: Yarn只响应job的提交及为job的运行分配资源,yarn不参与job的具体运行机制和流程. mapReduce程序中有一个进程MrAppMaster来负责程序的具体运行流程控制. ...

  7. MapReduce1和Yarn的工作机制

    Hadoop中的MapReduce的工作机制分为两种: MapReduce 1 也就是Hadoop 2.0之前的工作机制 YARN MapReduce 1 构成 MapReduce 1最主要的其实就是 ...

  8. 【MapReduce】MapReduce工作机制

    一个mapreduce作业,一般分为两阶段执行:map阶段和reduce阶段,下面分别对这两阶段进行介绍. Map阶段 Map阶段又分为五部分:读取文件阶段,MapTask阶段,collect阶段,溢 ...

  9. 第6章-MapReduce的工作机制-笔记

    为什么80%的码农都做不了架构师?>>>    作业的提交 可以只用一行代码来运行一个MapReduce作业: JobClient.runJob(conf). 作业的调度 Hadoo ...

最新文章

  1. Axios的基本使用
  2. VTK:PolyData之MultiBlockMergeFilter
  3. OnInit 和 Page_Init 事件有什么不同
  4. (18) Node.js npm包管理工具
  5. 月球软着陆matlab程序,matlab变量优化 卫星软着陆问题
  6. zend studio【快捷键】
  7. 高等代数第3版下 [丘维声 著] 2015年版_一文搞懂代数几何发展史(一)
  8. 【FPGA+BP神经网络】基于FPGA的简易BP神经网络verilog设计
  9. C++ Concurrency in Action, 2nd Edition 免积分下载
  10. 强化学习(十一) Prioritized Replay DQN
  11. 威联通Docker安装为知笔记方法
  12. 《惢客创业日记》2020.11.15-17(周日)谁有谁的四十不惑?
  13. java发送get请求400解决
  14. 解读数据处理白皮书、共话核心软件创新,软博会又一主题论坛拉开帷幕!
  15. 华中科技大学计算机徐永兵,华中科技大学计算机学院导师及科研方向.doc
  16. MySQL数据库 各种指令操作大杂烩(DML增删改、DQL查询、SQL...)
  17. 【文史】百家讲坛讲稿txt下载
  18. 上课记录笔记 项目1 文字大乱斗 v0.1
  19. 实验六 MPEG音频编码
  20. UCenter 基本原理

热门文章

  1. android 添加随意拖动的桌面悬浮窗口,android 添加随意拖动的桌面悬浮窗口
  2. java jdbc 详解_JDBC概述及详解各个对象
  3. 在微型计算机系统中,打印机一般是通过( ,2013湖南省计算机等级考试试题 二级C试题最新考试试题库...
  4. java ssh 那一层应该捕获异常_java ssh异常(大神来看看啊)
  5. c语言中的所有关键字,C语言中的32个关键字
  6. python 个人所得税问题_Python实现的个人所得税计算器
  7. 苹果app商品定价_【知乎问答】苹果 App Store 新推出的 1 元或 3 元定价对开发者有什么影响?...
  8. mysql考勤系统设计函数_Mysql实战之员工考勤系统数据库建立
  9. java http头 字符串转日期_springboot~DTO字符字段与日期字段的转换问题
  10. 2014 网选 5007 Post Robot(暴力或者AC_自动机(有点小题大作了))