MapReduce和YARN详解

1、MapReduce是什么

        MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。(摘自百度百科)

2、版本

hadoop 1.x    对应的MR1(计算+资源调度平台)

JobTracker:资源调度监控的平台

TaskTracker:计算平台     运行map    task和reduce    task

hadoop   2.x    对应MR2(计算        调度平台为yarn)

不需要部署组件的

3、YARN简介

        Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。(摘自百度百科)

4、YARN架构


MapReduce和YARN详解_第1张图片
YRAN架构图

YARN主从结构,有两个进程:Resource   Manager    和    Node   Manager

1.Resource  Manager (RM):负责对各NM上的资源进行统一管理和调度。将AM分配空闲的Container运行并监控其运行状态。对AM申请的资源请求分配相应的空闲Container。主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Application  Manager)。

        Scheduler:调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位是Container,从而限定每个任务使用的资源量。

        Application  Manager:应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动AM、监控AM运行状态并在失败时重新启动等,跟踪分给的Container的进度、状态也是其职责。

2.Node  Manager(NM):NM是每个节点上的资源和任务管理器。它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;同时会接收并处理来自AM的Container 启动/停止等请求。

        ApplicationMaster(AM):用户提交的应用程序均包含一个AM,负责应用的监控,跟踪应用执行状态,重启失败任务等。

ApplicationMaster是应用框架,它负责向ResourceManager协调资源,并且与NodeManager协同工作完成Task的执行和监控。

        Container(容器):是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container 表示的。 YARN会为每个任务分配一个Container且该任务只能使用该Container中描述的资源。

5、YARN的工作流程(mr提交应用程序)

MapReduce和YARN详解_第2张图片
YARN工作流程

1.用户向YARN中提交应用程序,其中包括AM程序、启动AM的命令、用户程序等。

2.RM为该应用程序分配一个container,并向对应的NM通信,要求他在这个container中启动AM。

3.AM向RM注册,这样用户可以直接通过RM查看应用程序的运行状态,然后它将为任务申请资源,并监控其运行状态,直到运行结束(重复4-7)

4.AM采用轮询的方式通过RPC协议向RM申请和领取资源。

5.AM申请到资源后,便于NM通信,要求其启动任务。

6.NM为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行改脚本启动任务。

7.各个任务通过RPC协议向AM汇报自己的进度和状态,让AM随时掌握各个任务的运行状态,从而可以在任务失败是重启任务。在应用程序运行过程中,用户可随时通过RPC向AM查询应用程序的当前运行状态。

8.应用程序运行完成后,AM注销并关闭自己。

6、YARN命令

yarn application –list                                   查看

yarn application –kill -applicationId             杀死进程

你可能感兴趣的:(MapReduce和YARN详解)