MapReduce执行流程之我见

本文详细阐述了MapReduce的执行过程,从输入文件的分区、map任务的处理、内存缓冲区的溢出处理、spill过程中的排序、合并与分区,到磁盘文件的合并、reduce任务的读取和执行,以及shuffle过程。MapReduce的核心操作包括多次排序、合并和分区,这些操作在map和reduce阶段起着关键作用。
摘要由CSDN通过智能技术生成
我们都知道Hadoop主要用于离线计算,它由两部分构成:HDFS和MapReduce,其中HDFS负责文件的存储,MapReduce负责对数据的计算,在执行MapReduce程序的时候。需要制定输入的文件uri、输出的文件uri。一般情况下这两个地址都是存放在HDFS上的。MapReduce计算过程又分成两个阶段:map阶段和reduce阶段,其中map阶段是负责将输入文件进行划分,划分的结果是一个个的key:value对,reduce阶段再将多个map的结果进行汇总。那我们就从整个计算的输入开始说起,来看一下MapReduce的整个计算过程是什么样子的,这里还是以简单的wordCount为例来说明,这里只是一个大体的流程,具体的细节以及可靠性保证还不了解。
     
在MapReduce的框架中存在两种角色的节点,分别为JobTracker和TaskTracker,它们分别是控制节点和工作节点,前者是系统的核心,通过单点的方式控制系统的资源分配和负载均衡,在MapReduce中job的提交都是提交到JobTracker上的,后者负责整个作业的资源申请、任务调度,它决定了每一个job的map和reduce在哪几台TaskTracker中执行,而TaskTracker是工作节点,可以执行map和reduce过程,需要实时的汇报自己的状态以及任务运行情况到JobTracker服务器。  

      我觉得mapreduce编程模型就是设置了多个回调的接口,然后整个框架在按照它的模型完成整个过程,你可以通过反射的方式设置不同的阶段调用不同的回调函数。


在所有的步骤之前,我们先明确MapReduce完成整个计算过程的输入是什么,输出又是什么?它输入的内容是一个或者多个文件,这些文件存储在HDFS中,输出的内容是一组key-value对,写入到HDFS中。

1、对输入进行分区
    执行map和reduce是被称为task的进程,它是由TaskTracker启动的,由于需要将输入数据交给多个TaskTracker上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值