Hadoop 运行HDFS重新平衡程序后如何保留HBase数据位置?或者,如何将数据从一个特定的数据节点移动到另一个数据节点?

Hadoop 运行HDFS重新平衡程序后如何保留HBase数据位置?或者,如何将数据从一个特定的数据节点移动到另一个数据节点?,hadoop,hbase,hdfs,Hadoop,Hbase,Hdfs,我的一个数据节点使用了70%的磁盘空间,而其他节点仅使用了30%的磁盘空间。如何将部分数据从70%磁盘节点迁移到其他节点。但是我不能使用HDFS重新平衡,因为Hbase在HDFS上运行,数据重新平衡可能会导致Hbase丢失数据位置 tl;dr:您询问的功能尚未包含在HDFS中 有一张JIRA记录单用于跟踪开发工作。正如您的问题所述,建议的datanode平衡器旨在解决datanodes不能均匀填充磁盘的问题。幸运的是,该功能正在积极开发中,我们可以预期它将在几个月(而不是几年)后重新合并到Had

我的一个数据节点使用了70%的磁盘空间,而其他节点仅使用了30%的磁盘空间。如何将部分数据从70%磁盘节点迁移到其他节点。但是我不能使用HDFS重新平衡,因为Hbase在HDFS上运行,数据重新平衡可能会导致Hbase丢失数据位置

tl;dr:您询问的功能尚未包含在HDFS中

有一张JIRA记录单用于跟踪开发工作。正如您的问题所述,建议的datanode平衡器旨在解决datanodes不能均匀填充磁盘的问题。幸运的是,该功能正在积极开发中,我们可以预期它将在几个月(而不是几年)后重新合并到Hadoop版本中

在JIRA链接中,在功能发布之前有两种变通方法:

  • 手动重新平衡存储目录中的块
  • 解除节点的任务&稍后读取它们

  • 但是,请小心地手动操作。

    我认为您可用的硬盘格式是相同的。如果您想迁移70%的数据,则使用分区方法

  • 创建不同格式的硬盘分区

  • 然后安装硬盘并按您的意愿使用


  • 您是否使用定制版的Hadoop,即通过CDH或Hortonworks等。?或者Apache?也许我可以手动将数据移动到其他数据节点,你觉得怎么样?我没有在HBase上工作过,但CDH Impala也使用数据位置,并且在他们的文档中声明,在完成HDFS重新平衡以更新数据位置后,我们需要调用
    刷新
    使元数据无效
    。对于HBase没有类似的命令吗?在这个答案中还有一些有价值的见解,以及为什么这种方式有效:“请解除节点调试&稍后读取它们”?我认为,由于平衡器丢失了数据位置,它可能在您的情况下不起作用。以上答案用于重新平衡磁盘(而不是数据节点)。如果要平衡跨数据的数据,并且可以为应用程序(HBASE)放宽数据局部性,可以考虑使用平衡器使用-包含选项指定数据元。