1. 使用root身份,执行hdfs相关操作,报权限问题

1
mkdir: Permission denied: user=root, access=WRITE, inode="/1":hdfs:hdfs:drwxr-xr-x

解决办法:

1
2
3
4
# 方式一:使用hdfs用户执行hdfs相关操作
sudo -u hdfs hdfs dfs -mkdir /lyz01
# 方式二:设置dfs.permissions.enabled
在 ambari页面修改hdfs的配置,找到dfs.permissions.enabled,使其值为false。

2. Restart NameNode 失败

1
2018-03-16 23:36:33,970 - Retrying after 10 seconds. Reason: Execution of '/usr/hdp/current/hadoop-hdfs-namenode/bin/hdfs dfsadmin -fs hdfs://lyz01.ambari.com:8020 -safemode get | grep 'Safe mode is OFF'' returned 1.

解决办法:

1
2
3
4
5
6
7
8
9
# su hdfs   //切换到hdfs用户,若关闭了hdfs的权限则可略过这一步
# hadoop dfsadmin -safemode leave //让namenode离开安全模式
# 这样就可以解决问题。
# 附录
dfsadmin -safemode value 参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待安全模式结束。

3. 远程连接 hdfs 失败

1
java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.; Host Details : local host is: "liuyongzhi9lc11/172.16.0.111"; destination host is: "lyz01.ambari.com":9000;

解决方法:

1
CDH的hdfs的端口号是8020,将端口号9000改为8020即可实现hdfs的远程连接。

4. hdfs 出现 Missing Block 的处理方法

1
2
一般情况下,很难出现missing block。HDFS拥有较为健壮的自愈能力。但当该问题出现时,一般较难恢复。
参考链接:http://blog.csdn.net/wateraworld/article/details/68183119;未尝试。

解决办法:

1
2
hadoop fsck /    # 使用命令查看 missing block的文件列表
hadoop fsck -delete # 使用命令将missing block的文件删除掉,不会删除正常文件。