2016-03-02 48 views
0

我只是Hadoop框架中的初學者。我想在這裏理解一些概念,並瀏覽瞭如此多的鏈接,但我想要得到明確的答案 1)爲什麼Map只使用鍵值對減少工作量。我還讀到,我可以創建一個實際使用的Map Reduce作業減少 2)映射階段輸入的關鍵是fileoffset鍵。我可以使用顯式鍵值嗎?或自定義輸入?地圖中的鍵值減少

+0

1)您需要理解shuffle和sort階段的概念,以瞭解爲什麼鍵值有意義。 2)你可以使用任何你想要的密鑰。爲了讀取幾乎任何可觸發的文件,該偏移量是完美的,因爲它允許在整個 –

+0

之間映射可均勻分割的塊。請閱讀http://stackoverflow.com/questions/10630447/hadoop-difference-between-0-reducer-and-identity-reducer –

回答

1

好的,你正在挖掘hadoop的概念。

1)我可以使用顯式鍵值嗎?或自定義輸入?:是的,編寫自己的(覆蓋)RecordReader這樣做。

2)爲什麼Map僅使用Key Value對減少作品?: MapReduce,顧名思義,程序只是將所需數據映射(過濾)到從程序提供的數據集中Reduce(基於唯一鍵的Combination)。 現在,爲什麼鍵值對?:因爲你正在處理非結構化數據,所以不希望得到與輸出一樣的結果。我們將需要對數據進行一些操作。想一想在java中使用Map,它有助於唯一標識這對,在hadoop中也是如此,在Sort的幫助下也是如此。

創建一個Map reduce作業,但實際上並沒有使用reduce?: Ofcourse完全依賴但建議僅用於小型操作,並且不需要將您的mapper輸出組合爲預期輸出。

原因:這裏是分佈式概念,商品硬件要優先考慮。例如:我有一個大型數據集要處理。在使用java程序(只是java,而不是hadoop)處理數據集時,我們存儲了Collection對象中的必需項(與使用RAM空間一樣簡單)。 Hadoop被引入以不同的方式完成相同的工作:將需要的數據存儲在context中。映射器中的上下文指的是中間數據(本地FS),還原器指輸出(HDFS)。當然,兩種情況下的上下文都存儲在HardDisk中。

Hadoop有助於在HardDisk中執行所有計算而不是RAM。

我建議閱讀Hadoop Defenitive Guide,數據算法書爲更好的理解。