MapReduce On YARN

MapReduce 运行流程

MapReduce 原语:相同的 key 为一组,调用一次 reduce 方法,方法内迭代这一组数据进行计算。

MapReduce On YARN_第1张图片
MapReduce 计算分为两个部分,MapTask 和 ReduceTask。MapTask 的数量由 split 切片数量决定,而 ReduceTask 的数量由人决定,一个 ReduceTask 对应一个 partition 分区。
MapReduce On YARN_第2张图片
MapReduce 执行步骤:
MapTask 阶段
1、读取 HDFS 中的文件。利用客户指定的 inputFormat 来获取 LineRecordReader 读取数据,形成输入 对。<0,hello you> <10,hello me> k 代表偏移量,v 代表每行的内容。
2、将输入 对传递给客户自定义的 map() 方法,进行处理,转换为新的 对收集到缓存。
3、将缓存中的 按照 k 进行分区。(默认分为一个区)
4、对不同分区中的数据进行排序(按照 k)、分组。分组指的是相同 key 的 value 放到一个集合中。 排序后: 分组后:
5、(可选)对分组后的数据进行归约。

ReduceTask 阶段
1、多个 map 任务的输出,按照不同的分区,通过网络 copy 到不同的 reduce 节点上。
2、对多个 map 的输出进行合并排序。然后按照相同的 key 为一个组,调用客户定义的 reduce() 方法进行逻辑运算,并收集运算输出的结果 ,然后调用客户指定的 outputFormat 将结果数据输出到 HDFS 中。

参考链接:
https://www.cnblogs.com/ahu-lichang/p/6645074.html
https://www.cnblogs.com/liuwei6/p/6708116.html

MRv1 运行架构

MapReduce On YARN_第3张图片
MRv1 角色介绍:

  • JobTracker:主节点,调度所有作业、监控整个集群的资源负载。
  • TaskTracker:从节点,自身资源管理、和 JobTracker 心跳,汇报资源,获取 Task。
  • Client:计算 split 切片清单、将配置信息、Jar包、split 清单上传到 HDFS,将作业提交给 JobTracker。

作业执行流程:
1、Client 先将 split 清单、Jar包、相关配置信息等资源上传到 HDFS,然后将作业提交到 JobTracker。
2、JobTracker 从 HDFS 中取回 split 清单,然后根据资源负载情况,然后规划出每一个 MapTask/ReduceTask 在哪一个节点上执行。
3、TaskTracker 与 JobTracker 心跳时,将 Map/ReduceTask 任务取回,然后根据任务从 HDFS 取回 Jar包,执行计算。

弊端:
JobTracker:负载过重,单点故障
资源管理与计算调度强耦合,其他计算框架需要重复实现资源管理
不同框架对资源不能全局管理

MRv2:MapReduce On YARN

MapReduce On YARN_第4张图片
由于 MRv1 中 JobTracker 存在弊端,在 MRv1 的基础上 Hadoop 2.0 引入新的资源管理系统:YARN。其核心思想是将 MRv1 中 JobTracker 的资源管理和任务调度两个功能分开,分别由 ResourceManager 和 ApplicationMaster 进程实现。ResourceManager 负责整个集群的资源管理和调度;ApplicationMaster(相当于 MRv1 中的 JobTracker)负责应用程序相关的事务,比如任务调度、任务监控和容错等。

YARN:

  • ResourceManager:主节点,负责集群统一的资源管理、调度、分配等。
  • NodeManager:从节点,与 RM 心跳汇报资源、管理 Container 生命周期。
  • Container:是 yarn 中分配资源的一个单位,包含内存、CPU等资源, yarn 以 Container 为单位分配资源。计算框架中的角色都以 Container 表示。

MR:

  • MR-ApplicationMaster:负责一个 Job 生命周期内的所有工作,类似 MRv1 框架中的 JobTracker。每一个 Job 都有一个 ApplicationMaster,它可以运行在ResourceManager以外的机器上。
  • Task

Client:

  • RM-Client:请求资源创建 AM(ApplicationMaster)
  • AM-Client:与 AM 交互

YARN作业执行流程:
MapReduce On YARN_第5张图片

YARN 的引入,使得多个计算框架可运行在一个集群中
每个应用程序对应一个ApplicationMaster
目前多个计算框架可以运行在 YARN 上,比如 MapReduce、Spark、Storm等

你可能感兴趣的:(大数据,MapReduce,YARN,大数据)