我在 HDFS 上有一些損壞的檔案,因為所有塊副本都報告為丟失。現在有許多資料節點關閉,所以我想知道哪些資料節點可以恢復,以糾正丟失的塊。
我有檔案和塊的串列,有沒有辦法可以顯示塊的“最后已知位置”(它們在哪個資料節點上)?
到目前為止,我已經嘗試使用hadoop fsck,但它似乎只能報告所有副本都丟失了,而不是它們所在的位置。還嘗試使用hadoop oivwith XML 轉儲,但我看不到任何塊位置資訊。
這些資訊在任何地方都可用嗎?
uj5u.com熱心網友回復:
塊的位置不會持久化。如果您重新啟動 Namenode,它們會忘記所有位置,只能從 datanode 塊報告中學習它們。
因此,如果塊丟失,則意味著沒有資料節點在其磁盤上找到它們,因此不會將它們報告給 Namenode。
要檢查的一件事是所有 DN 都報告了預期的塊數,并且沒有報告失敗的卷,并且每個 DN 都有預期的磁盤數。
如果塊是最近的,您可能會幸運地為丟失的 block_id 查找名稱節點日志。您可能會在那里找到它們最初分配的位置,但是如果運行平衡器等,它們可能已經移動了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316027.html
