Hadoop学习之路(3)Map-Shuffle-Reduce详解与源码剖析
@[TOC] 1 Split阶段 首先,接到hdf文件输入,在mapreduce中的map task开始之前,将文件按照指定的大小切割成若干个部分,每一部分称为一个split,默认是split的大小与block的大小相等,均为128MB。split大小由minSize、maxSize、blocksize决定,以wordcount代码为例,以下是main()方法 进入 waitForCompletion(true) 方法,进入 submit() 方法 找到 return submitter .submitJobInternal(Job.this, cluster); 进入,找到 int maps = writeSplits(job, submitJobDir); 进入 writeNewSplits() 方法 进入writeNewSplits()方法,可以看出该方法首先获取splits数组信息后,排序,将会优先处理大文件。最终返回mapper数量。这其中又分为两部分:确定切片数量 和 写入切片信息。确定切片数量的任务交由FileInputFormat的getSplits(job)完成,写入切片信息的任务交由JobSplitWriter.createSplitFiles(jobSubmitDir, conf, jobSubmitDir.getFileSystem