分布式计算 MapReduce与yarn工作机制

分布式计算 MapReduce与yarn工作机制,第1张

分布式计算MapReduce与yarn工作机制

一、第一代hadoop的组成和构造

第一代Hadoop由分布式系统软件HDFS和分布式计算架构MapReduce组成,其中HDFS由一个NameNode和几个DataNode组成,MapReduce由一个JobTracker和几个TaskTracker组成。匹配的Hadoop版本号是Hadoop1.x和0.21.X,0.22.x。

1。MapReduce角色分配


客户:提交作品的发起者。

JobTracker:重置工作,分配工作,与TaskTracker沟通,协调所有工作。

TaskTracker:维护JobTracker通信,并在分布式数据和信息亮点上实现MapReduce日常任务。

2。MapReduce实施步骤

(1)提交作品

提交作品前,必须对作品进行装备。

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

输入输出路径

其他设备,如减产等。

调配后,根据JobClinet提交。


(2)工作复位

客户提交后,JobTracker会将工作添加到序列中,然后进行生产调度。默认的生产计划方法是先进先出调整法。

(3)日常任务的分配

TaskTracker和JobTracker之间的通信以及日常任务的分配都是基于心率系统的。

TaskTracker会主动询问JobTracker是否有工作要做。如果它自己能做,它会申请上班的日常任务,可以做地图或者减少日常任务。

(4)日常任务的实施

申请日常任务后,TaskTracker会进行以下 *** 作:

将代码复制到本地

将日常任务的信息内容复制到本地。

启动JVM运行日常任务

(5)情境和日常任务升级

每天在整个运行过程中,任务会先向TaskTracker汇报自己的情况,再由TaskTracker汇总并告知JobTracker。

每日任务进度根据电子计数器完成。

(6)工作进度

只有在接受最后一个要运行的每日任务后,JobTracker才会将每日任务标记为成功。

这时候我会做删除中间结果等后处理工作。


第二代和第二代hadoop的组成和构造


第二代Hadoop是为了摆脱Hadoop1.0中HDFS和MapReduce存在的各种问题而明确提出的。针对Hadoop1.0中单个NameNode制约HDFS扩展性的问题,明确提出了HDFS联邦,允许多个NameNode掌握不同的文件目录来完成浏览保护和横向扩展;针对Hadoop1.0中MapReduce在可扩展性和多架构应用方面的不足,明确提出了一种新的升级资源管理方法architectureYARN(又一个资源协商器),将JobTracker中的资源管理方法和作业控制功能分离。完成了免费组件ResourceManager和ApplicationMaster,其中ResourceManager承担所有应用的资源分配,ApplicationMaster只管理一个应用。匹配的Hadoop版本号是Hadoop0.23.x和2.x..


1。纱线 *** 作框架


YARN是下一代Hadoop测量服务平台,如下图所示:

在YARN架构中,全局资源管理器作为一个关键的后台进程运行,它通常在单个设备上运行,并在市场上各种竞争应用程序之间竞争可用的集群资源。

ResourceManager将跟踪集群中有多少可用的主题活动连接点和资源,并协调客户提交的哪些应用程序应该在何时获得这种资源。ResourceManager是唯一拥有这些信息内容的进程,因此它可以根据某种资源共享、安全和多租户的方法(例如,根据应用程序优先级、序列卷、ACL、数据信息位置等)做出分配(或生产调度)管理决策。).

当客户提交应用程序时,将启动一个名为ApplicationMaster的轻量级流程案例,以协调应用程序中所有日常任务的实现。这包括监视日常任务、重新启动不成功的日常任务、推断缓慢的日常任务以及计算应用程序电子计数器值的总数。这项工作职责以前被分配给一个单独的JobTracker。应用程序和属于它的应用程序的日常任务在NodeManager控制的资源容器中运行。


NodeManager是TaskTracker的一个更通用、更高效的版本号。没有固定的映射和reduce槽,但是NodeManager有许多动态创建的资源容器。容器的大小取决于它包含的资源数量,如运行内存、CPU、硬盘和互联网IO。现阶段只适用于运行内存和CPU(YARN-3)。连接点上的容器总数由连接点的总资源输出(如总CPU和总运行内存)决定。


必须说明的是,ApplicationMaster可以在容器中运行各种日常任务。例如,mapreduceApplicationMaster需要一个容器来启动Map或reduce日常任务,而GiraphApplicationMaster需要一个容器来运行Giraph日常任务。


还可以完成一个自定义的ApplicationMaster来运行特殊的日常任务,从而创造和发明一个全新的、升级的分布式系统应用架构,改变互联网大数据的布局。


在YARN中,MapReduce被降级为分布式系统应用程序的角色(但它仍然是一个非常时尚和有效的角色),现在称为MRv2。MRv2是经典MapReduce模块(称为MRv1)的再现,它运行在YARN之上。


2。YARN可以运行所有分布式系统应用程序


管理器、节点管理器和容器也不关注应用程序或日常任务的种类。所有特定于应用架构的代码都将被迁移到ApplicationMaster,这样所有分布式框架都可以被YARN应用。

得益于这种通用方法,HadoopYARNcluster可以运行许多不同的分布式计算实体模型,如MapReduce、Giraph、Storm、Spark、Tez/Impala、MPI等。


3。提交纱线申请

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

假设客户以与MRv1相同的方式输入hadoopjar指令,并将应用程序提交给ResourceManager。ResourceManager维护集群上运行的应用程序目录和每个主题活动的NodeManager上的可用资源目录。


ResourceManager必须知道哪个应用程序接下来应该获得集群资源的一部分。这种管理决策受到许多限制,例如序列大小、ACL和公平性。管理器应用一个可插入的调度程序。调度器只实现生产调度;它管理谁何时获得集群资源(以容器的形式),但要监控应用程序中的所有日常任务并不容易,所以尝试重启不成功的日常任务也不容易。


当ResourceManager接受新的应用程序提交时,Scheduler做出的第一个管理决策是选择将用于运行ApplicationMaster的容器。在ApplicationMaster启动后,它将占用该应用程序的整个生命周期。首先,它将资源需求发送给ResourceManager,请求运行应用程序日常任务所需的容器。

资源需求是对一些容器的需求,这些容器用于考虑一些资源需求,例如:

  • 一定的资源量应该用现阶段MB运行内存和CPU市场份额来表示。

  • 首选部件由IP地址和声卡机架名称指定。

    此应用程序中的一个优先,而不是跨越几个应用程序。


    如果可能,ResourceManager将分配一个容器(表示为容器ID和IP地址),该容器考虑了ApplicationMaster的资源需求。该容器允许应用程序应用特定服务器上给定的资源量。分配容器后,ApplicationMaster将指定NodeManager(管理方法分配容器的服务器)应该使用该资源来启动特定于应用程序的日常任务。这个日常任务可以是在所有架构中编写的所有流程(比如MapReduce日常任务或Giraph日常任务)。


    NodeManager不容易监控日常任务;它只监视容器中资源的应用程序状态。例如,如果一个容器消耗的运行内存比最初分配的多,它将完成该容器。


    ApplicationMaster将尽力协调容器,并启动所有必要的日常任务来执行其应用程序。它还监视应用程序和日常任务的进度,在新要求的容器中重新启动不成功的日常任务,并向提交应用程序的移动客户端报告进度。

    在应用程序运行之后,ApplicationMaster将关闭自己,并放入空自己的容器。


    虽然ResourceManager监控应用程序中的所有日常任务并不容易,但它会检查ApplicationMaster的健康状况。如果ApplicationMaster不成功,ResourceManager可以在新的容器中重新启动它。我们可以认为ResourceManager部门管理ApplicationMaster,ApplicationMasters部门管理日常任务。


    欢迎分享,转载请注明来源:内存溢出

    原文地址:https://54852.com/zz/778174.html

    (0)
    打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
    上一篇 2022-05-03
    下一篇2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

      保存