在哪里可以找到损坏块的副本
where to find the replicas of corrupt blocks
我的 hadoop 集群中有一些损坏的块,我们使用的复制因子是 3 。
我的理解是,即使一个块损坏了,我们也会在其他节点中拥有 2 个以上的良好副本。
当我在一个好的文件路径中执行 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 于 12 月 29 日星期五结束 02:32:32 MST 2017 仅用了 1 毫秒
但是当我对损坏的文件执行 fsck /corruptfile -blocks -locations -files 时,我没有得到副本位置,而且我看到平均块复制为 0.0 :
状态:腐败
总尺寸:27853 B
目录总数:0
文件总数:1
总符号链接:0
区块总数(已验证):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 于 12 月 29 日星期五结束 02:39:50 MST 2017 仅用了 0 毫秒
谁能解释一下:
1) 正如我所看到的 avg replication 为 0.0 ,这是否意味着我们没有损坏块的副本
2)我们通常删除损坏的块以使集群健康,在这种情况下,这是删除块的正确选项。
3)为什么我看不到这个损坏块的副本位置。
4) 任何人都可以 post 在他们损坏的块上的 FSCK 样本。
谢谢。
你可以查看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
看到这里损坏的是块而不是文件,所以这里有几种方法 -
你为什么不首先使用 hadoop fs -get
在本地获取文件,如果你在本地获取的文件是好的,稍后将文件从集群中删除,然后再次将文件放入它使用的相同位置 hadoop
.
其次,找到block的文件或者如果有文件,查看健康状态,显示healthy,然后进入hadoop dfsadmin safemode enter
done the maintenance,查看数据手动节点,配置后,留下safemode
,hadoop dfsadmin -refreshNodes
和后来的运行 hadoop balancer
命令,它会解决问题,因为第1点有很多失败的可能性那些其他工具连接并依赖于该文件。
我提到了我的想法,选择权在你,提前祝你 2018 年新年快乐,谢谢。
我的 hadoop 集群中有一些损坏的块,我们使用的复制因子是 3 。 我的理解是,即使一个块损坏了,我们也会在其他节点中拥有 2 个以上的良好副本。 当我在一个好的文件路径中执行 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 于 12 月 29 日星期五结束 02:32:32 MST 2017 仅用了 1 毫秒
但是当我对损坏的文件执行 fsck /corruptfile -blocks -locations -files 时,我没有得到副本位置,而且我看到平均块复制为 0.0 : 状态:腐败 总尺寸:27853 B 目录总数:0 文件总数:1 总符号链接:0 区块总数(已验证):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 于 12 月 29 日星期五结束 02:39:50 MST 2017 仅用了 0 毫秒
谁能解释一下: 1) 正如我所看到的 avg replication 为 0.0 ,这是否意味着我们没有损坏块的副本 2)我们通常删除损坏的块以使集群健康,在这种情况下,这是删除块的正确选项。 3)为什么我看不到这个损坏块的副本位置。 4) 任何人都可以 post 在他们损坏的块上的 FSCK 样本。
谢谢。
你可以查看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
看到这里损坏的是块而不是文件,所以这里有几种方法 -
你为什么不首先使用
hadoop fs -get
在本地获取文件,如果你在本地获取的文件是好的,稍后将文件从集群中删除,然后再次将文件放入它使用的相同位置hadoop
.其次,找到block的文件或者如果有文件,查看健康状态,显示healthy,然后进入
hadoop dfsadmin safemode enter
done the maintenance,查看数据手动节点,配置后,留下safemode
,hadoop dfsadmin -refreshNodes
和后来的运行hadoop balancer
命令,它会解决问题,因为第1点有很多失败的可能性那些其他工具连接并依赖于该文件。
我提到了我的想法,选择权在你,提前祝你 2018 年新年快乐,谢谢。