【问题标题】:HDFS Find last known locations of missing blocksHDFS 查找丢失块的最后已知位置
【发布时间】:2021-11-25 08:01:13
【问题描述】:

我在 HDFS 上有一些损坏的文件,因为所有块副本都报告为丢失。现在有很多数据节点,所以我想知道哪些可以恢复,哪些可以纠正丢失的块。

我有文件和块的列表,有没有办法可以显示块的“最后已知位置”(它们在哪个数据节点上)?

到目前为止,我已经尝试使用hadoop fsck,但它似乎只能报告所有副本都丢失了,而不是它们在哪里。还尝试将hadoop oiv 与 XML 转储一起使用,但我看不到任何块位置信息。

这些信息在任何地方都可用吗?

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

    方块的位置不会被持久化。如果你重新启动 Namenodes,它们会忘记所有的位置,只从数据节点块报告中学习它们。

    因此,如果缺少块,则意味着没有数据节点在其磁盘上找到它们,因此不会将它们报告给 Namenode。

    需要检查的一点是,所有 DN 都报告了预期的块数,并且没有报告失败的卷,并且每个 DN 都有预期的磁盘数。

    如果块是最近的,你可能会幸运地在 namenode 日志中查找丢失的 block_id。在那里您可能会找到它们最初分配的位置,但如果平衡器运行等,它们可能会从那时起移动。

    【讨论】:

    • 就我而言,有几十个节点因各种磁盘故障而停机。我能够通过在名称节点日志上使用 grep 来查找它们首次创建的位置并恢复这些节点,从而找到几乎所有丢失的块。我会将此标记为已接受的答案。
    猜你喜欢
    • 2015-05-23
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多