MapReduce中Shuffle原理详解
1、概述 1、MapReduce 中,map 阶段处理的数据如何传递给 reduce 阶段,是 MapReduce 框架中最关键的一个流程,这个流程就叫 Shuffle;2、Shuffle: 数据汇洗 就是将 maptask 输出的处理结果数据,分发给reducetask。2、主要流程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架构
作业提交流程
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 注销并关闭自己
。