MapReduce作业:
MapReduce作业(Job)是客户端需要执行的一个工作单元:它包括输入数据,MapReduce程序和配置信息。
Hadoop作业:
Hadoop是将作业分成若干个小任务(Task)来执行,其中包括两类任务:Map任务和Reduce任务。有两类节点控制着作业执行过程:一个JobTracket及一系列TaskTracker。JobTracker通过调度TaskTracker上运行的任务,来协调所有运行在系统上的作业。TaskTracker在运行任务的同时将运行进度报告发送给JobTracker,JobTracker由此记录每项作业任务的整体进度情况,如果其中一个任务失败,JobTracker可以在另外一个TaskTracker节点上重新调度该任务。
Map任务将其输出写入到本地硬盘,而非HDFS,这是为什么?
因为Map的输出是中间结果,该中间结果由reduce任务处理后才产生最终输出结构,而且一旦作业完成,Map的输出结果可以被删除,因此,如果把它存储在HDFS中并实现备份,难免小题大做。如果该节点上运行的Map任务将Map中间结果传送到reduce任务之前失败,Hadoop将在另一个节点上重新运行这个map任务以再次构建Map中间结果。
如果有多个Reduce任务,则每个Map任务都会对其输出进行分区(Partition),即为每个Reduce任务建一个分区,每个分区有许多键(及其对应值),但每个键对应的键/值对记录都在同一分区中。分区由用户定义的分区函数控制,但通常默认的分区器(Partitioner)通过哈希函数来分区的,这种方法很高效。
Name:Xr
Date:2014-02-25 21:41