一問題現象:namenode 數據塊丟失node
查看丟失數據塊:hdfs fsck /
簡單刪除丟失塊命令行
for (( i=0; i<100; i++ )) do hdfs fsck / | grep 'MISSING' | head -n 1 | cut -d : -f 1 | xargs hdfs fsck -delete done
問題現象:以下圖apache
二 問題現象:namenode datanode journode數據不對齊bash
三 問題現象:hdfs 訪問權限不夠app
Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-xoop
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=root, access=EXECUTE, inode="/tmp/hive/root":hdfs:supergroup:drwx------spa
爲題緣由:訪問權限不足,致使寫入失敗命令行
解決方案:授予用戶目錄權限code
執行指令:blog
1 給特定目錄授予用戶權力,該場景爲該目錄ip
sudo -u hdfs hadoop fs -chown -R deploy /user/deploy/
其中,deploy爲待添加權限用戶
2 添加用戶到supergroup
具體原理:
Hadoop自己的用戶和組的關係,都是同步Linux系統中的,可是HDFS和Linux的超級用戶組又有一點差異,HDFS中的超級用戶組是supergroup,可是Linux中默認是沒有supergoup這個組,這個時候只須要在Linux中增長supergroup這個組,而後將要在HDFS中加入到supergroup中的用戶加到這個組中,再同步HDFS用戶和組便可。
具體指令:
1、在Linux執行以下命令增長supergroup groupadd supergroup 2、如將用戶yarn增長到supergroup中,再執行: usermod -a -G supergroup yarn 3、同步系統的權限信息到HDFS: su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"