MapReduce运行流程

在这里插入图片描述
MapRecude运行流程
1.客户端提交代码 job.watiforcompletion()开始运行
2.请求到ResourceManager(经理)请求运行,ResourceManager返回jobId,和让客户端提交资源的路径
3.客户端读取Hdfs文件,进行切片,序列化得到FileSplit分片信息对象,然后把FileSplit(maptask读取文件),jar包(程序运行需要),xml(job对象序列化,包含设置的一些参数)提交到Hdfs上
4.客户端再次提交请求,让ResourceManager创建运行任务的容器(1.5G+1Core),ResourceManager将创建容器的任务放在任务队列中,排到任务时,在NodeManager上创建容器(2G+1core),并下载hdfs上的资源到工作目录等待,
5.客户端在监听容器创建完成后,发送shell…命令到对应NodeManager节点,容器内启动Appmaster(小组长)
6.Appmaster根据切片信息和xml中的参数分配maptask和reducetask个数,向ResourceManager请求容器,ResourceManager再次京任务放到队列中,等待有资源的NodeManage领取任务创建好容器,然后下载hdfs资源到工作目录,然后Appmaster控制NodeManage运行maptask和reducetask任务的完成
7.任务结束 容器和进程释放

在这里插入图片描述
在这里插入图片描述

上图中mapreduce中的shuffle过程类比于spark groupby的算子产生的shuffle操作,都是key的hashcode值%(下游reducetask的个数/spark的task个数)
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MapReduce是一种分布式计算框架,用于处理大规模数据集。它将大规模数据集分成小的数据块,然后在多个计算节点上并行处理这些数据块,最终将结果合并起来。下面是MapReduce的执行流程: 1. 输入数据分片:MapReduce将输入数据分成若干个固定大小的数据块。 2. Map阶段:Map任务从输入数据块中提取数据并生成键值对。Map任务的输出被缓存在内存中,直到缓冲区填满为止。 3. Map输出的合并:当Map任务缓冲区已满时,它会将输出写入本地磁盘,并将缓存清空。同时,Map任务会将输出的键值对按照键的哈希值分发到多个Reduce任务中,以便进行进一步的处理。 4. Shuffle阶段:在Shuffle阶段,Map任务的输出被复制到多个Reduce节点上,以便进行处理。在这个阶段,Map任务会与Reduce任务进行通信,以便将Map任务的输出发送到正确的Reduce节点。 5. Reduce阶段:Reduce任务接收到多个Map任务的输出,并将它们合并在一起。Reduce任务的输出被写入磁盘,并作为最终结果返回给用户。 6. 输出数据:最终的输出数据可以被写入HDFS,也可以被写入本地文件系统。 需要注意的是,MapReduce框架将大规模数据集分成小的数据块进行处理,这样可以提高处理效率。此外,MapReduce框架的执行流程可以自动管理任务调度、容错以及数据复制等问题,使得用户可以专注于编写Map和Reduce函数,而不必关心底层的实现细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值