我知道复制不足的块和错误复制的块都是由于相对于复制因子集而言数据节点数较少而发生的。
但是它们之间有什么区别呢?
在可用数据节点为 1 的情况下将复制因子重新设置为 1 时,复制不足的块和丢失副本错误都被清除。通过执行命令 hdfs fsck / 确保这一点
来自 Tom White 的《Hadoop:权威指南》:
过度复制的块 这些块超出了其所属文件的目标复制范围。 一般情况下,过度复制不会有问题,HDFS会自动删除多余的 复制品。
复制不足的块 这些块不满足其所属文件的目标复制。 HDFS会自动为复制不足的块创建新的副本,直到它们满足 目标复制。 您可以获得有关正在复制的块的信息(或 等待复制)使用 hdfs dfsadmin -metasave .
错误复制的块 这些是不满足块副本放置策略的块(请参阅副本 放置)。 例如,对于多机架集群中的三级复制级别,如果所有 一个块的三个副本位于同一机架上,则该块被错误复制,因为 副本应分布在至少两个机架上以实现弹性。 HDFS 将 自动重新复制错误复制的块,使其满足机架放置 政策。
损坏的区块 这些块的副本全部损坏。 至少有一个未损坏的块 副本不会被报告为损坏; namenode将复制未损坏的副本 直到达到目标复制。
缺少副本 这些块在集群中的任何位置都没有副本。
希望这能回答您的问题。
您缺少一个重要类别:
hdfs dfsadmin -report
显示,而不与 hdfs dfs -fsck
显示。 HDFS 自动修复功能将自动(并最终)修复这些好的副本。