在哪里可以找到腐败块的复制品

时间:2017-12-29 10:41:45

标签: hadoop hdfs fsck

我的hadoop集群中有一些损坏的块,我们使用的复制因子是3。 我的理解是,即使一个块被破坏,我们将在其他节点中有两个更好的副本。 当我在一个好的文件路径中执行fsck时,我会获得下面的详细信息以及所有副本的位置: / location / to / goodfile1 29600字节,1块:好的 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年2月29日星期二02:32:32结束,1毫秒

但是当我对一个损坏的文件执行 fsck / corruptfile -blocks -locations -files 时,我没有获得副本位置,我也看到平均块复制为0.0: 状态:腐败  总面积:27853 B.  总目标:0  总文件数:1  总符号链接:0  总块数(已验证):1(平均块大小27853 B)

MINER REPL&D; 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年2月29日星期二02:39:50结束,时间为0毫秒

任何人都可以解释: 1)因为我看到avg复制为0.0,这是否意味着我们没有为损坏的块提供复制品 2)我们通常会删除损坏的块以使群集健康,在这种情况下这是删除块的正确选项。 3)为什么我没有看到这个腐败块的副本位置。 4)任何人都可以在他们的腐败区块上发布FSCK样本。

谢谢。

1 个答案:

答案 0 :(得分:0)

你可以查看namenode:50075 / blockScannerReport?listblocks,它会列出所有块的状态(会出现很长的页面),

因此,当您检查fsck(文件系统检查实用程序) -

hadoop fsck -block -location -racks fullAddressOfFileInHDFS

所以在你得到之后你也已经弄清了 -

的名单
 Over-replicated blocks:    0 (0.0 %)
 Under-replicated blocks:    0 (0.0 %)
 Mis-replicated blocks:        0 (0.0 %)

实际上,Average block replication:必须1.0才能保持身体健康,但由于0.0

而显示Corrupt Blocks: 1

在这里看到块被损坏而不是文件,所以这里有几种方法 -

  1. 为什么不首先使用hadoop fs -get在本地获取文件,如果你在本地获得的文件是好的,稍后将文件从集群中删除,从而再次将文件放在同一位置正在使用hadoop

  2. 其次,找到该块的文件或者如果您有该文件,请检查运行状况良好的健康状态,然后输入hadoop dfsadmin safemode enter完成维护,手动检查数据节点,之后配置,离开safemodehadoop dfsadmin -refreshNodes然后运行hadoop balancer命令,它将解决问题,因为对于那些其他工具连接而言,有很多可能会失败,并且依赖于文件

  3. 我提到了我的想法,选择是你的,2018年新年快乐,谢谢。