MapReduce的工作机制

       MapReduce的执行流程简单概括如下:用户作业执行JobClient.runJob(conf)代码会在Hadoop集群上将其启动。启动之后JobClient实例会向JobTracker获取JobId,而且客户端会将作业执行需要的作业资源复制到HDFS上,然后将作业提交给JobTracker。JobTracker在本地初始化作业,再从HDFS作业资源中获取作业输入的分割信息,根据这些信息JobTracker将作业分割成多个任务,然后分配给在与JobTracker心跳通信中请求任务的TaskTracker。TaskTracker接收到新的任务之后会先从HDFS上获取作业资源,包括作业配置信息和本作业分片的输入,然后在本地启动一个JVM并执行任务。任务结束之后将结果写回HDFS。


       MapReduce中采用的两种机制,分别是错误处理机制和作业调度机制。在错误处理机制中,如果遇到硬件故障,MapReduce会将故障节点上的任务分配给其他节点处理。如果遇到任务失败,则会重新执行。在作业调度机制中,主要是公平调度器,这种调度策略能够按照提交作业的用户数目将资源公平的分到用户的作业池中,以达到公平共享整个集群的目的。


       最后介绍一下MapReduce中两个流程的细节,分别是shuffle和任务执行。shuffle的过程可以概括为:在map端,当缓冲区内容达到阈值时Map写出内容。写出时按照key值对数据排序,再按照划分将数据写入文件,然后进行merge并将结果交给Reduce。在Reduce端,TaskTracker先从执行Map的TaskTracker节点上复制Map输出,然后对排序合并,最后进行Reduce处理。

       关于任务执行则主要介绍三个任务执行的细节,分别是推测式执行、JVM重用和执行环境。推测式执行是指JobTracker在作业执行过程中,发现某个作业执行速度过慢,为了不影响整个作业的完成进度,会启动和这个作业完全相同的备份作业让TaskTracker执行,最后保留而这种较快完成的结果。JVM重用主要是针对比较零碎的任务,对于新任务不是启动新的JVM,而是在先前任务执行完毕的JVM上直接执行,这样节省了JVM启动的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值