HDFS查找丢失数据块的最后已知位置

fiei3ece  于 2022-12-09  发布在  HDFS
关注(0)|答案(1)|浏览(222)

我在HDFS上有一些损坏的文件,因为所有块副本都报告为丢失。现在有很多数据节点关闭,所以我想知道哪些节点需要恢复,哪些节点将纠正丢失的块。
我有文件和块的列表,是否有方法显示块的“最后已知位置”(它们位于哪个数据节点上)?
到目前为止,我已经尝试使用hadoop fsck,但它似乎只能报告所有副本都丢失了,而不能报告它们在哪里。
这些信息在任何地方都能得到吗?

lnxxn5zx

lnxxn5zx1#

块的位置是不持久的。如果您重新启动Namenode,它们会忘记所有位置,而只能从datanode块报告中了解它们。
因此,如果块丢失,则意味着没有数据节点在其磁盘上找到它们,因此不会将它们报告给Namenode。
需要检查的一件事是,所有DN都报告了预期的块数,没有报告出现故障的卷,并且每个DN都具有预期的磁盘数。
如果这些块是最近的,你可以在名称节点日志中找到丢失的block_id。在那里你可以找到它们最初被分配的位置,但是如果平衡器在运行的话,它们可能已经被移动了。

相关问题