哪里可以找到损坏块的副本

eulz3vhy  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(370)

我的hadoop集群中有一些损坏的块,我们使用的复制因子是3。我的理解是,即使一个块已损坏,我们也会在其他节点中有2个更好的副本。当我在一个好的文件路径中执行fsck时,我会得到下面所有副本的位置的详细信息:/location/to/goodfile1 29600字节,1个块:ok 0。bp x xx.1xx.1xx.xx-1364828076720:黑色\u 1114138336 \u 1099565732615 len=29600 live \u repl=3[/default/xx.1xx.1xx.xx:50010,/default/xx.1xx.xx:50010,/default/xx.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:status:corrupt total size:27853 b total dirs:0 total files:1 total symlinks:0 total blocks(validated):1(平均块大小27853 b)
在最小复制块下: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在0毫秒内于2017年12月29日星期五02:39:50 mst结束
有谁能解释一下:1)我认为avg replication为0.0,这是否意味着我们没有损坏的块的副本2)我们通常删除损坏的块以使集群健康,在这种情况下,这是删除块的正确选项。3) 为什么我看不到这个损坏块的副本位置。4) 任何人都可以发布一个样本的fsck对他们的腐败块。
谢谢您。

xxls0lw8

xxls0lw81#

你可以查一下namenode:50075/blockscannerreport?listblocks 它将列出所有块的状态(将出现很长的页面),
因此,当您检查fsck(文件系统检查实用程序)时-
hadoop fsck-block-location-racks-fulladdressofileinhdfs
所以在你得到并且你也幻想了-

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 请看这里的块被损坏,而不是文件,所以这里有几种方法-
为什么不先用 hadoop fs -get 如果您在本地得到的文件是好的,那么稍后从集群中删除该文件,然后再次将该文件放在它使用的相同位置 hadoop .
其次,找到该块的文件,或者如果您有该文件,请检查健康状态(显示为健康),然后输入 hadoop dfsadmin safemode enter 维护完成后,手动检查数据节点,配置完成后,离开 safemode , hadoop dfsadmin -refreshNodes 然后运行 hadoop balancer 命令,它将解决此问题,因为对于那些其他工具连接和依赖于该文件的工具,点1有许多失败的可能性。
我提到了我想是的,选择权在你,提前祝2018年新年快乐,谢谢。

相关问题