4

我有一个 Hadoop 集群,它有 8 台机器,所有 8 台机器都是数据节点。有一个程序在一台机器(比如机器 A)上运行,它将在 HDFS 中连续创建序列文件(每个文件大约 1GB)。

这就是问题所在:所有 8 台机器都是相同的硬件并且具有相同的容量。当其他机器在 HDFS 磁盘上仍有大约 50% 的可用空间时,机器 A 只剩下 5%。我检查了块信息,发现几乎每个块在机器 A 上都有一个副本。

有没有办法平衡副本?谢谢。

4

2 回答 2

1

有一种方法。您可以使用 hadoop 命令行平衡器工具。HDFS 数据可能并不总是均匀地分布在 DataNode 上。要在集群中的 DataNode 上均匀地分布 HDFS 数据,可以使用此方法。

 hadoop balancer [-threshold <threshold>]

其中,阈值是磁盘容量的百分比

有关详细信息,请参阅以下链接:

于 2013-10-29T08:41:16.607 回答
1

这是默认放置策略。它适用于典型的 M/R 模式,其中每个 HDFS 节点也是一个计算节点,写入器机器是均匀分布的。

如果你不喜欢它,那么HDFS-385 设计了一个可插拔的接口来将块的副本放置在 HDFS 中。您需要编写一个实现BlockPlacementPolicy接口的类,然后将该类设置为dfs.block.replicator.classnamein hdfs-site.xml

于 2013-10-29T07:17:46.613 回答