linux—如何完全更改每个hadoop数据节点上的底层磁盘?

pod7payv  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(246)

我有 N hadoop数据节点。每一个都附带了两个3tb的卷。每个卷都用xfs格式化。每个卷都配置为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的热交换功能,但是文档有点缺乏,并且没有明确说明它将块从旧卷移动到新卷。
我不需要保持集群运行。如果我能停止一切,复制所有的区块,那就太好了。

3gtaxfhh

3gtaxfhh1#

如果群集中的所有文件都有2个以上的副本。只需一次关闭一个dn并用新磁盘替换磁盘是安全的。hdfs将负责重新复制过程。您需要等待文件块在dn重新启动后被完全复制(例如,通过运行 hdfs fsck ).
或者您可以运行datanode decommission进程,等待datanode将所有块移出此计算机。在用新磁盘重新启动这个数据节点之后。你得跑了 Balancer 把一些数据移回去。
直到今天(2016年9月),还没有正式的方法将所有数据块从一个磁盘移动到另一个磁盘。然而,它是完全安全的只是运行 mv /mnt/vol_a/hdfs/datanode /mnt/large_vol_c/hdfs/datanode 当datanode(或集群)关闭时,您自己。然后配置 dfs.data.dir 去新的地方。

相关问题