MR详细运行原理及过程

本文详细解析MapReduce(MR)的工作原理和运行流程,包括Map、Reduce、Shuffle过程,以及MR在YARN上的执行机制,深入探讨ResourceManager、ApplicationMaster、NodeManager的角色与交互。
摘要由CSDN通过智能技术生成

文章目录

MR的原理和运行流程
    Map的运行过程
    Reduce处理过程
    Shuffle过程
    MR运行过程
    Yarn && Job

MR的原理和运行流程
Map的运行过程

以HDFS上的文件作为默认输入源为例(MR也可以有其他的输入源)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-419qFeIb-1589376928673)(https://github.com/jiaoqiyuan/163-bigdate-note/raw/master/%E6%97%A5%E5%BF%97%E8%A7%A3%E6%9E%90%E5%8F%8A%E8%AE%A1%E7%AE%97%EF%BC%9AMR/img/Map%E8%BF%90%E8%A1%8C%E8%BF%87%E7%A8%8B.png “”)]

block是HDFS上的文件块,split是文件的分片(逻辑划分,不包含具体数据,只包含这些数据的位置信息)。
    一个split包含一个或多个block,默认是一对一的关系。
    一个split不包含两个文件的block, 不会跨越file边界,也就是说一个split是不会跨文件进行划分的。

当分片完成后,MR程序会将split中的数据以K/V(key/value)的形式读取出来,然后将这些数据交给用户自定义的Map函数进行处理。
    一个Map处理一个split。

用户用Map函数处理完数据后将处理后,同样将结果以K/V的形式交给MR的计算框架。

MR计算框架会将不同的数据划分成不同的partition,数据相同的多个partition最后会分到同一个reduce节点上面进行处理,也就是说一类partition对应一个reduce。

Map默认使用Hash算法对key值进行Hash计算,这样保证了相同key值的数据能够划分到相同的partition中,同时也保证了不同的partition之间的数据量时大致相当的,参考链接

一个程序中Map和Reduce的数量是有split和partition的数据决定的。

Reduce处理过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yDsRinfZ-1589376928676)(https://github.com/jiaoqiyuan/163-bigdate-note/raw/master/%E6%97%A5%E5%BF%97%E8%A7%A3%E6%9E%90%E5%8F%8A%E8%AE%A1%E7%AE%97%EF%BC%9AMR/img/Reduce%E5%A4%84%E7%90%86%E8%BF%87%E7%A8%8B.png “”)]

Map处理完后,reduce处理程序在各个Map节点将属于自己的数据拷贝到自己的内存缓冲区中
最后将这些数据合并成一个大的数据集,并且按照key值进行聚合,把聚合后的value值作为一个迭代器给用户使用。
用户使用自定义的reduce函数处理完迭代器中的数据后,一般把结果以K/V的格式存储到HDFS上的文件中。

Shuffle过程

在上面介绍的MR过程中,还存在一个shuffle过程,发生与Map和Reduce之中。
MR on YARN(MapReduce on Yet Another Resource Negotiator)是一种在Hadoop生态系统中运行MapReduce作业的方式。它的工作原理如下: 1. 提交作业:用户通过客户端向YARN资源管理器(ResourceManager)提交MapReduce作业。作业包括MapReduce程序的代码和配置信息。 2. 资源分配:ResourceManager接收到作业后,将其分解为多个任务(Task),包括Map任务和Reduce任务。然后,ResourceManager根据集群中可用的资源情况,将这些任务分配给不同的节点(NodeManager)执行。 3. 任务执行:每个节点上的NodeManager接收到任务后,会启动一个容器(Container)来执行该任务。容器是一个隔离的执行环境,其中包含了任务所需的资源和环境。 4. Map阶段:在Map阶段,每个Map任务会读取输入数据,并将其划分为多个键值对。然后,Map任务会将这些键值对按照指定的逻辑进行处理,并生成中间结果。 5. Shuffle阶段:在Shuffle阶段,Map任务的中间结果会被分区、排序和分组,以便传输给Reduce任务进行处理。这个过程涉及到数据的排序和网络传输。 6. Reduce阶段:在Reduce阶段,每个Reduce任务会接收到一组经过Shuffle阶段处理的中间结果。Reduce任务会对这些结果进行合并、计算和输出,生成最终的结果。 7. 完成作业:当所有的Map任务和Reduce任务都完成后,作业会被标记为完成,并将最终的结果输出到指定的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值