2016-03-04 106 views
0

我有N Hadoop DataNodes。每個已附加兩個 3TB卷。每個卷都使用XFS進行格式化。每個卷都配置爲DataNode的數據目錄。例如:如何徹底更改每個Hadoop DataNode上的底層磁盤?

$ df -Th 
/dev/xvdb1  xfs  3.0T 2.0T 1.1T 65% /mnt/vol_a 
/dev/xvdc1  xfs  3.0T 1.3T 1.8T 41% /mnt/vol_b 

$ cat hdfs-site.xml 
... 
<property> 
    <name>dfs.data.dir</name> 
    <value>/mnt/vol_a/hdfs/datanode,/mnt/vol_b/hdfs/datanode</value> 
</property> 
... 

目標:我想替換兩個3 TB卷完全用新邏輯卷不同盤,它然後我可以在未來擴展。

問題:對於每個節點,假設體積附着,如何完全遷移舊卷小號到新的卷而不斷裂的Hadoop(即HDFS,的DataNodes,NameNode的等)?

我知道Hadoop's Hot Swap capabilities,但文檔有點缺乏,它沒有明確說明它將塊從舊卷移動到新卷。

我做不是需要保持集羣運行。如果我能夠阻止一切並以某種方式複製所有塊,那太棒了。

回答

0
  • 如果羣集中的所有文件都有2+個副本。一次只關閉一個DN是安全的,並用新的更換磁盤。 HDFS將照顧重新複製過程。在DN重新啓動後(即通過運行hdfs fsck),您需要等待完全複製的文件塊。

  • 或者你也可以運行DataNode退役進程,等待DataNode將所有的塊移出本機。用新磁盤重新啓動此DataNode後。您需要運行Balancer以將一些數據移回。

截至今日(SEP 2016),還有從一個磁盤移動所有塊到另一個磁盤上沒有正式的辦法。但是,在DataNode(或集羣)關閉時,自己運行mv /mnt/vol_a/hdfs/datanode /mnt/large_vol_c/hdfs/datanode是完全安全的。然後將dfs.data.dir配置到新位置。