MapReducer2.0原理

 MapReduce是一个用于大规模数据处理的分布式计算模型,最初由Google工程师设计并实现的,Google已经将完整的MapReduce论文公开发布了。其中的定义是,MapReduce是一个编程模型,是一个用于处理和生成大规模数据集的相关的实现。用户定义一个map函数来处理一个Key-Value对以生成一批中间的Key-Value对,再定义一个reduce函数将所有这些中间的有相同Key的Value合并起来。很多现实世界中的任务都可用这个模型来表达。
下面我画了一张图,便于理解MapReduce得整个工作原理

步骤:
1.在客户端写好MapReducer程序,在客户端运行Job作业
2.客户端会向ResourceManage发送一个请求,申请一个Job作业ID.
3.客户端 将作业运行所需的资源,比如作业JAR文件、配置文件等复制到HDFS中
4.提交作业.提交作业之前会进行检查.
.检查作业指定输出目录的路径是否存在,存在则抛异常给客户端(防止覆盖输出结果).
.检查作业的输入路径是否存在,如果不存在,作业也没法提交,抛异常给客户端.
5.对作业进行初始化,将Job任务交给作业调度器(ResourceScheduler)进行调度.(说明:
Hadoop作业的调度器常见的有3个:先进先出调度器;容量调度器;公平调度器).初始
化包括创建一个表示正在运行作业的对象——封装任务的记录信息,以便跟踪任务的状
态和进程.
6. ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager
通信,要求它在这个Container中启动应用程序的ApplicationMaster.
7.ApplicationMaster从HDFS上获取分片信息,根据分片信息创建map任务(一个分片对
应一个map任务).
8.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过
ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它
的运行状态,直到运行结束,
9.ResourceManager让ResourceScheduler通过RPC协议给各个任务分配领取资源.
10.ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务
11.NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)
后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
12.各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让
ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动
任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程
序的当前运行状态
13.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己
下面对上面出现的一些名词进行介绍
ResourceManager(RM):
RM 是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器( Scheduler )和应用程序管理器( Applications Manager ASM ).
Scheduler )调度器
调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。需要注意的是,该调度器是一个 纯调度器 ,它不再从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执 行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的 ApplicationMaster 完成。调度器仅根据各个应用程序的资源需求进行资源分 配,而资源分配单位用一个抽象概念 资源容器 Resource Container ,简称 Container )表示, Container 是一个动态资源分配单位,它将内存、 CPU 、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。此外,该调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器, YARN 提供了多种直接可用的调度器,比如 Fair Scheduler Capacity Scheduler 等。
Applications Manager
应用程序管理器( Applications Manager ASM
应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动 ApplicationMaster 、监控 ApplicationMaster 运行状态并在失败时重新启动它等。
. ApplicationMaster(AM):
用户提交的每个应用程序均包含 1 AM ,主要功能包括:
RM 调度器协商以获取资源(用 Container 表示);
将得到的任务进一步分配给内部的任务;
NM 通信以启动 / 停止任务;
监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。 
NodeManager(NM):
NM 是每个节点上的资源和任务管理器, 一方面,它会 定时地向 RM 汇报本节点上的资源使用情况和各个 Container 的运行状态 ;另一方面,它接收并 处理来自 AM Container 启动 / 停止等各种请求.
客户端(client):
编写mapreduce程序,配置作业,提交作业,这就是程序员完成的工作.
HDFS(分布式存储系统):
保存作业的数据、配置信息等等,最后的结果也是保存在hdfs上面.




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值