假设我有一个包含多个机架的HDFS集群(v 2.0.5),但最初并未设置机架感知功能。已使用默认的3x复制将数据加载到其中。如果现在将HDFS配置为了解机架,则一个块的三个副本很可能位于同一机架上,这不是我想要的。
如果我的集群已经达到平衡,运行HDFS平衡器是否会强制执行块复制策略并适当地调整块的周围,即在一个机架上有一个块,在另一个机架上有两个块?从我所读到的内容来看,如果集群是平衡的,它将直接退出该过程。
如果没有,如何强制HDFS将所需的块重新复制到单独的机架?
最佳答案
如果更改机架配置,以便现在有两个机架,那么在平衡器之前,只有两个机架会自动确定需要重新平衡同一机架上所有副本的块。换句话说,当机架配置发生更改时,它不再认为集群是平衡的(除非偶然地,在机架配置更改后,这些块神奇地位于正确的位置)。