一问题现象: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"