2017-09-25 89 views
0

我們的Hadoop集羣每天報告有「低複製塊」。它通過Cloudera Manager進行管理。健康警語的一個例子是:HDFS重複發生的錯誤:低複製塊

! Under-Replicated Blocks

Concerning: 767 under replicated blocks in the cluster. 3,115 total blocks in the cluster. Percentage under replicated blocks: 24.62%. Warning threshold: 10.00%.

我已經運行能解決問題的命令,但是第二天早晨報警又回來了,有時並沒有添加任何新數據。其中暫時停止成功的命令是

hdfs dfs -setrep -R 2 /* 

我也曾嘗試another recommended command

su hdfs 
hdfs fsck/| grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files 
for hdfsfile in `cat /tmp/under_replicated_files`; do echo "Fixing $hdfsfile :" ; hadoop fs -setrep 2 $hdfsfile; done 

雙方做工作,但解決方法是不是永久性的。

在Cloudera Manager中,Replication FactorMinimal Block Replication都設置爲2

由於這個問題只發生在大約每24小時一次,所以嘗試修復是困難和耗時的,試錯法是我唯一的手段。我不知道爲什麼這個錯誤不斷回來!任何建議,將不勝感激。通過設置在Cloudera的經理以下HDFS配置解決由於

+0

基本上,如果您有一個數據未完全複製的HDFS應該自動將這些塊複製到其他數據節點以匹配複製因子。 您還可以運行CM> HDFS> Actions下拉菜單中給出的Balancer來修復此錯誤。 集羣中有多少個數據節點?您是否通過NN Web UI看到哪些文件具有複製塊?這些文件是否是由作業創建的臨時文件。您是否看到一旦相關工作完成後,這些警告是否會在沒有做任何事情的情況下消失? – Salim

+0

你有沒有和問題發生時一樣的節奏運行的工作? – tk421

+0

@ tk421不幸的是,它似乎沒有任何數據攝入工作(或任何工作,就此而言)運行 – Smittey

回答

0

問題:

  1. 轉到HDFS服務。
  2. 單擊配置選項卡。
  3. 選擇範圍> NameNode。
  4. Filesystem Trash Interval0 day(s)

    輸入 '0' 禁用垃圾的功能。

該屬性也可以用fs.trash.interval

一次,我設置此我刪除所有有問題的未複製的垃圾塊的構造 - 如圖 通過尋找在通過運行下面的命令生成的under_replicated_files文件:

hdfs fsck/| grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files 

我最終刪除了用戶的所有.Trash。

這一切都阻止了其他任何東西被移入.Trash一旦被刪除(我意識到可能不是一個可以接受的解決方案,但對我的用例來說這完全沒問題)。此外,刪除所有未複製塊意味着警告消失。