2016-06-27 21 views
0

我知道物理塊和hadoop中Inputsplits之間的差異。 順便說一句我正在使用Hadoop 2.0版本(紗線處理)。Mapreduce爲什麼分裂(文本文件)的數量即使對於一個小文件也是大於1

我有一個非常微小的輸入數據集。可能是1.5 Mb的大小。當我運行使用這個小數據集的mapredce程序時,在運行過程中,它顯示有2個輸入分裂。爲什麼當小數據集的大小小於128 MB時應該將它們分成兩部分。

在我的理解中,塊大小配置爲128 MB大小,輸入分割是邏輯分區的數據。這意味着每個分割開始的位置(如在哪個節點和哪個分塊編號中)以及它在哪裏結束。數據的起始位置和結束位置是分割的。

我沒有得到分裂在一個小數據集中的原因。

有人可以解釋一下嗎? 感謝 納特

回答

0

先了解如何分割的數量將決定,它取決於兩個事情:

  1. 如果您還沒有定義任何自定義分割大小,然後它會採取默認大小這將是塊大小,在你的情況下是128 MB。

  2. 這是很重要的,現在如果你有兩個小文件,它將被保存在兩個不同塊所以分裂的數量將是兩個。

你的答案是在上述兩個點,這是額外的信息,現在映射器和分裂次數的數量之間的關係是一個 - 一個如此分割數將是相同映射器數量。

+0

我還沒有定義驅動類中的分割數。 –

+0

在這種情況下,如果您的文件大小小於128MB,它將駐留在它的**個別**單個塊中,並且會出現許多單據,請使用'hadoop fs -fsck -block'或' hdfs dfs -fsck -block' – Vishrant

相關問題