簡體   English   中英

如何明確定義datanode在HDFS中存儲特定的給定文件?

[英]How to explicilty define datanodes to store a particular given file in HDFS?

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

現在,我想將文件01的兩個塊之一存儲在從屬節點1中,並將另一個存儲在從屬節點2中。 類似地,file02的三個塊之一位於從屬節點1,第二個位於從屬節點3,第三個位於從屬節點4。 所以,我的問題是我該怎么做?

實際上有一種方法:每次在conf / slaves文件中進行更改以存儲文件。 但是我不想這樣做,所以,還有另一種解決方案? 我希望我說清楚。 等待您的友好答復。

沒有方法可以滿足您的要求-名稱節點將根據機架配置,復制因子和節點可用性將塊復制到數據節點,因此即使您確實設法在兩個特定數據節點上獲取了一個塊,這些節點中的第一個發生故障時,名稱節點會將塊復制到另一個節點。

您的要求還假設復制因子為1,這不會給您帶來任何數據冗余(如果丟失數據節點,這是一件壞事)。

如果要保持群集均勻分布,請讓namenode管理塊分配並定期使用平衡器

NameNode是決定塊放置的最終授權。 關於使該算法可插入的要求,有Jira: https : //issues.apache.org/jira/browse/HDFS-385
但不幸的是,它是0.21版本,不是生產版本(盡管工作情況還不錯)。
如果您處於研究狀態,我建議您將算法插入0.21,然后等待0.23投入生產,或者如果現在確實需要,則將代碼降級為0.20。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM