1. 程式人生 > >2,MapReduce原理及原始碼解讀

2,MapReduce原理及原始碼解讀

# MapReduce原理及原始碼解讀 [TOC] ### 一、分片 #### 靈魂拷問:為什麼要分片? - **分而治之:**MapReduce(MR)的核心思想就是分而治之;何時分,如何分就要從原理和原始碼來入手。做為碼農大家都知道,不管一個程式多麼複雜,在寫程式碼和學習程式碼之前最重要的就是搞懂輸入和輸出,而MR的輸入其實就是一個目錄。而所謂的分而治之其實也是在把大檔案分成小檔案,然後一個機器處理一個小檔案,最後再合併。所以MR的第一步就是對輸入的檔案進行分片。 #### 1.1 對誰分片 - **對每個檔案分片:**分片是對輸入目錄中的每一個檔案進行分片。後面的分片都是針對單個檔案分片。 - **原始碼解讀(對誰分片):** ~~~java // 分片的原始碼位置 package org.apache.hadoop.mapreduce.lib.input; abstract class FileInputFormat.java; // 下面程式碼所在方法 method getSplits(); // InputStatus表示一個切片