【问题标题】:How can I completely change the underlying disks on each Hadoop DataNode?如何完全更改每个 Hadoop DataNode 上的底层磁盘?
【发布时间】:2016-06-18 17:22:46
【问题描述】:

我有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's Hot Swap capabilities,但文档有点缺乏,并且没有明确说明它将块从旧卷移动到新卷。

我确实不需要需要保持集群运行。如果我可以停止一切并以某种方式复制所有块,那就太好了。

【问题讨论】:

    标签: linux hadoop hdfs


    【解决方案1】:
    • 如果集群中的所有文件都有 2 个以上的副本。一次简单地关闭一个 DN 并用新磁盘替换磁盘是安全的。 HDFS 将负责重新复制过程。尽管在 DN 重新启动后(即通过运行 hdfs fsck),您仍需要等待文件块被完全复制。

    • 或者你可以运行DataNode的decommission process,等待DataNode把所有的blocks移出这台机器。在你用新磁盘重新启动这个 DataNode 之后。您需要运行Balancer 将一些数据移回。

    直到今天(2016 年 9 月),还没有官方方法可以将所有块从一个磁盘移动到另一个磁盘。但是,当 DataNode(或集群)关闭时,自己运行 mv /mnt/vol_a/hdfs/datanode /mnt/large_vol_c/hdfs/datanode 是完全安全的。然后将dfs.data.dir配置到新位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-15
      • 2017-07-26
      • 1970-01-01
      • 2017-01-27
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多