2012-05-30 27 views
1

我想編寫一個腳本或類似.xml文件,它明確定義Hadoop集羣中的datanodes來存儲特定的文件塊。例如: : 假設有4個從節點和1個主節點(hadoop集羣中共有5個節點)。 有兩個文件file01(大小= 120 MB)和file02(大小= 160 MB)。默認塊大小= 64MB如何明確定義datanode以將特定給定文件存儲在HDFS中?

現在我想將file01的兩個塊中的一個存儲在從屬節點1和另一個從屬節點2 。 類似於從節點1處的file02三個塊中的一個,從節點3處的第二個節點處以及從節點4處的第三個塊。 所以,我的問題是我該如何做到這一點?

居然還有一個方法:請在CONF更改/奴隸文件中的每個存儲文件的時間。 但我不想這樣做 因此,還有另一種解決方案來做到這一點? 我希望我明確表達自己的觀點。 等待你的迴應.. !!!

+0

請放下幾句話爲什麼你需要它 –

+0

@DavidGruzman 我想確保一個特定的數據節點肯定存儲在一個特定的文件的某些塊..我的意思是可以幫助我在集羣內使用負載平衡hadoop與其他一些集羣管理框架.. –

回答

3

有沒有方法來實現你問在這裏 - 在名稱節點將複製塊基於機架配置,複製因子和節點可用性數據節點,所以即使你設法讓兩個特定的數據塊節點,如果其中一個節點關閉,名稱節點會將該塊複製到另一個節點。

你的要求也假定爲1的複製因子,它不給你任何數據冗餘(這是一件壞事,如果你失去了一個數據節點)。

讓NameNode的管理塊分配,如果你想保持你的集羣平均distibuted

+0

我想在一個特定的datanode上存儲一個文件塊。它可能在另一個datanode上覆制文件塊以獲得數據冗餘。但它應該在特定的datanode上存儲一個文件塊。希望我明確了我的觀點。 –

+0

您無法通過這種方式控制塊放置 –

1

的NameNode是決定該塊放置一個最終的權威定期使用平衡器。 有Jira關於使這個算法可插拔的要求: https://issues.apache.org/jira/browse/HDFS-385
但不幸的是它在0.21版本,這是不生產(即使工作不壞)。
如果您處於研究狀態,然後等待0.23變爲生產,或者如果現在確實需要將代碼降級到0.20,則我建議將算法插入0.21。

+0

有關即將推出的可插入界面的相關信息 - 感謝分享 –

相關問題