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架构

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提交应用程序)

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 杀死进程