我的 hadoop 集群中有一些损坏的块,我们使用的复制因子是 3 。我的理解是,即使一个块损坏了,我们也会在其他节点上再拥有 2 个好的副本。当我在一个好的文件路径中执行 fsck 时,我会得到以下详细信息以及所有副本的位置:/location/to/goodfile1 29600 字节,1 个块:OK 0. BP-xxxx-xx.1xx.1xx。 xx-1364828076720:blk_1114138336_1099565732615 len=29600 Live_repl=3 [/default/xx.1xx.1xx.xx:50010, /default/xx.1xx.1xx.xx:50010, /default/xx.1xx.1xx.xx:50010 ]
状态:健康 总大小:29600 B 总目录:0 总文件:1 总符号链接:0 总块(已验证):1(平均块大小 29600 B) 最小复制块:1(100.0 %) 过度复制块:0 (0.0 %) 复制不足的块:0 (0.0 %) 错误复制的块:0 (0.0 %) 默认复制因子:3 平均块复制:3.0 损坏块:0 丢失副本:0 (0.0 %) 数据数量-节点:14 机架数:1 FSCK 在 2017 年 12 月 29 日星期五 02:32:32 MST 1 毫秒内结束
但是当我对损坏的文件执行fsck /corruptfile -blocks -locations -files时,我没有得到副本位置,我也看到平均块复制为 0.0:状态:损坏总大小:27853 B 总目录:0 总文件:1 符号链接总数:0 总块(已验证):1(平均块大小 27853 B)
低于最小 REPL'D 块:1 (100.0 %) dfs.namenode.replication.min:1 损坏文件:1 丢失块:1 丢失大小:27853 B 损坏块:1
最小复制块:0 (0.0 %) 过度复制块:0 (0.0 %) 复制不足块:0 (0.0 %) 错误复制块:0 (0.0 %) 默认复制因子:3 平均块复制:0.0 损坏块:1 丢失的副本:0 数据节点数:14 机架数:1 FSCK 于 2017 年 12 月 29 日星期五 02:39:50 MST 在 0 毫秒内结束
任何人都可以解释一下:1)我认为平均复制为 0.0,这是否意味着我们没有损坏块的副本 2)我们通常删除损坏块以使集群健康,在这种情况下,这是一个正确的删除选项块。3)为什么我看不到这个损坏块的副本位置。4)任何人都可以在他们的损坏块上发布 FSCK 的样本。
谢谢你。