MapReduce开发运行的精简原理
作者:黑马程序员链接:来源:知乎著作权归作者所有 。 商业转载请联系作者获得授权 , 非商业转载请注明出处 。
简单介绍
相信关于Hadoop中MapReduce的相关文章会很多 , 这里只简单介绍一下MapReduce的相关知识 。
Hadoop的MapReduce来源于Google公司的三篇论文中的MapReduce , 其核心思想是“分而治之”
Map负责“分” , 即把复杂的任务分解为若干个“简单的任务”来并行处理 。 可以进行拆分的前提是这些小任务可以并行计算 , 彼此间几乎没有依赖关系 。
Reduce负责“合” , 即对map阶段的结果进行全局汇总 。
现阶段MapReduce一般运行在Hadoop2.x版本的yarn资源平台上 , 具体运行过程后面会有详细说明 。
MapReduce编程规范
MapReduce的开发一共有八个步骤,其中Map阶段分为2个步骤 , Shuffle阶段4个步骤 , Reduce阶段分为2个步骤
Map阶段2个步骤
1)设置InputFormat类,将数据切分为Key-Value(K1和V1)对,输入到第二步
2)自定义Map逻辑,将第一步的结果转换成另外的Key-Value(K2和V2)对,输出结果
Shuffle阶段4个步骤
3)对输出的Key-Value对进行分区
4)对不同分区的数据按照相同的Key排序
5)(可选)对分组过的数据初步规约,降低数据的网络拷贝
6)对数据进行分组,相同Key的Value放入一个集合中
Reduce阶段2个步骤
7)对多个Map任务的结果进行排序以及合并,编写Reduce函数实现自己的逻辑,对输入的Key-Value进行处理,转为新的Key-Value(K3和V3)输出
8)设置OutputFormat处理并保存Reduce输出的Key-Value数据
yarn是hadoop集群当中的资源管理系统模块 , 从hadoop2.0开始引入yarn模块,yarn可为各类计算框架提供资源的管理和调度,主要用于管理集群当中的资源(主要是服务器的各种硬件资源 , 包括CPU , 内存 , 磁盘 , 网络IO等)以及调度运行在yarn上面的各种任务 。
【MapReduce开发运行的精简原理】相比于hadoop1.x版本 , yarn核心出发点是为了分离资源管理与作业监控 , 实现分离的做法是拥有一个全局的资源管理ResourceManager(RM) , 以及每个应用程序对应一个的应用管理器ApplicationMaster(AM) 。
总结一句话就是说:yarn主要就是为了调度资源 , 管理任务 。
YARN总体上是Master/Slave结构 , 主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成 。
ResourceManager(RM)负责处理客户端请求,对各NM上的资源进行统一管理和调度 。 给ApplicationMaster分配空闲的Container运行并监控其运行状态 。 主要由两个组件构成:调度器和应用程序管理器:
调度器(Scheduler):调度器根据容量、队列等限制条件 , 将系统中的资源分配给各个正在运行的应用程序 。 调度器仅根据各个应用程序的资源需求进行资源分配 , 而资源分配单位是Container 。 Shceduler不负责监控或者跟踪应用程序的状态 。 总之 , 调度器根据应用程序的资源要求 , 以及集群机器的资源情况 , 为应用程序分配封装在Container中的资源 。
应用程序管理器(ApplicationsManager):应用程序管理器负责管理整个系统中所有应用程序 , 包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动等 , 跟踪分给的Container的进度、状态也是其职责 。
NodeManager(NM)NodeManager是每个节点上的资源和任务管理器 。 它会定时地向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态;同时会接收并处理来自ApplicationMaster的Container启动/停止等请求 。
ApplicationMaster(AM):用户提交的应用程序均包含一个ApplicationMaster , 负责应用的监控 , 跟踪应用执行状态 , 重启失败任务等 。 ApplicationMaster是应用框架 , 它负责向ResourceManager协调资源 , 并且与NodeManager协同工作完成Task的执行和监控 。
Container:Container是YARN中的资源抽象 , 它封装了某个节点上的多维度资源 , 如内存、CPU、磁盘、网络等 , 当ApplicationMaster向ResourceManager申请资源时 , ResourceManager为ApplicationMaster返回的资源便是用Container表示的 。
yarn的架构和工作流程
推荐阅读
- 米歇尔·戴斯玛克特|海奥华预言的真相,地球人被带到九级文明,揭开神话背后的秘密
- 这早餐我从3岁开始吃,三十多年了,从没吃腻过,晶莹剔透很好吃
- 番茄的地道做法,酸酸甜甜,开胃又下饭,值得品尝
- 酸甜开胃的番茄肉丸虾汤,营养均衡,非常好吃
- 烙饼时,别再用凉水和开水了,用它,又软又香还出层,放凉也不硬
- 液态金属|脑科学日报:开发用于活体神经记录的可拉伸液态金属电极阵列
- 一碗面粉,开水一烫,简单搅一搅,柔软筋道,放凉不会硬,太好吃
- 整理21款菜肴推荐,香辣开胃解馋解腻,喜欢就一起试试做吧
- 去二姑家吃饭,饭菜一扫而空,觉得她可以出去开家常菜馆了
- 你煮面条都是等到水开才下锅那你煮面肯定难吃,正确方法在这呢
