MapReduce中Shuffle原理详解

1、概述 1、MapReduce 中,map 阶段处理的数据如何传递给 reduce 阶段,是 MapReduce 框架中最关键的
一个流程,这个流程就叫 Shuffle;
2、Shuffle: 数据汇洗 就是将 maptask 输出的处理结果数据,分发给
reducetask。
2、主要流程

yarn shuffle yarn shuffle server原理_hadoop


Shuffle 是 MR 处理流程中的一个过程,它的每一个处理步骤是分散在各个 map task 和 reduce


task 节点上完成的,整体来看,分为4个操作:


1、分区 partition


2、Sort 根据 key 排序(MapReduce 编程中的 sort 是一定会做的,一定仅按照 key 排序)


3、Combiner 进行局部 value 的合并(Combiner 是可选的组件)


4、分组

资源调度框架YARN详解

YARN概述 YARN(Yet Another Resource Negotiator)
Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作 系统平 台,而 MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
有以下注意点:
1、yarn 并不清楚用户提交的程序的运行机制
2、yarn只提供运算资源的调度(用户程序向 yarn 申请资源,yarn 就负责分配资源)
3、yarn 中的主管角色叫 ResourceManager
4、yarn 中提供运算资源的角色叫 NodeManager
5、yarn 与运行的用户程序解耦
6、spark、storm 等运算框架都可以整合在 yarn 上运行
7、yarn 就成为一个通用的资源调度平台

Yarn架构

yarn shuffle yarn shuffle server原理_应用程序_02

作业提交流程

1、用户向 YARN 中提交应用程序,其中包括 ApplicationMaster 程序,启动 ApplicationMaster 的命 令,用户程序等
2、ResourceManager 为该程序分配第一个 Container,并与对应的 NodeManager通讯,要求它在 这个 Container 中启动应用程序 ApplicationMaster
3、ApplicationMaster 首先向 ResourceManager注册,这样用户可以直接通过 ResourceManager 查看应用程序的运行状态,然后将为各个任务申请资源,并监控它的运行状态,直到运行结束,重复 4 到 7 的步骤
4、ApplicationMaster 采用轮询的方式通过 RPC 协议向 ResourceManager 申请和领取资源
5、一旦ApplicationMaster 申请到资源后,便与对应的 NodeManager 通讯,要求它启动任务
6、NodeManager为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启 动任务
7、各个任务通过RPC 协议向ApplicationMaster 汇报自己的状态和进度,以让 ApplicationMaster 随 时掌握各个任务的运行状态。
8、应用程序运行完成后,AM 向 RM 注销并关闭自己