一 HDFS 金丝雀
Canary 测试无法为 /tmp/.cloudera_health_monitoring_canary_files 创建父目录。
1 检查hdfs是否处于safemode,正常是off
[root@shuang conf.cloudera.hdfs]# hdfs dfsadmin -safemode get
Safe mode is OFF
2 检查hdfs datanode是否健康,磁盘空间是否空闲,可自行上传文件测试
[root@shuang conf.cloudera.hdfs]# hdfs dfsadmin -report
Configured Capacity: 67606098740 (62.96 GB)
Present Capacity: 34380423168 (32.02 GB)
DFS Remaining: 34380398592 (32.02 GB)
DFS Used: 24576 (24 KB)
DFS Used%: 0.00%
Replicated Blocks:
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
Erasure Coded Block Groups:
Low redundancy block groups: 0
Block groups with corrupt internal blocks: 0
Missing block groups: 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
-------------------------------------------------
report: Access denied for user root. Superuser privilege is required
解决 report: Access denied for user root. Superuser privilege is required
解决办法1.
ps -ef
看一下运行hdfs的用户是谁,再切到该用户下
root 11980 11954 0 14:27 ? 00:00:23 python2.6 /opt/cm-5.7.0/lib64/cmf/agent/build/env/bin/flood
postfix 12065 1078 0 14:29 ? 00:00:00 pickup -l -t fifo -u
root 14740 1 0 14:55 ? 00:00:00 sshd: root@pts/0
root 14765 14740 0 14:55 pts/0 00:00:00 -bash
root 15158 1 0 14:58 ? 00:00:00 /usr/sbin/sshd
hdfs 16493 11954 2 15:19 ? 00:00:29 /usr/java/jdk1.7.0_67//bin/java -Dproc_namenode -Xmx1000m -Dhdfs.audit.logg
hdfs 16523 11954 1 15:19 ? 00:00:14 /usr/java/jdk1.7.0_67//bin/java -Dproc_secondarynamenode -Xmx1000m -Dhdfs.a
root 19304 8259 1 15:43 pts/1 00:00:00 ps -ef
sudo -u hdfs + 具体命令
再运行就ok了
解决办法2
到服务器上修改hadoop的配置文件:
[root@shuang conf.cloudera.hdfs]# cd /etc/hadoop/conf.cloudera.hdfs
[root@shuang conf.cloudera.hdfs]# ls
__cloudera_generation__ __cloudera_metadata__ core-site.xml hadoop-env.sh hdfs-site.xml log4j.properties ssl-client.xml topology.map topology.py
然后在hdfs-core.xml, 找到 dfs.permissions 的配置项 ,
将value值改为 false
在conf/hdfs-site.xml中加入
解决办法3
clouder manager 在web上操作流程:
1)增加角色:HDFS->配置->检查HDFS 权限dfs.permissions这项不要打勾->保存更改->重启hdfs
之后就可以用root用户
解决办法4
如果是java接口操作hdfs
在代码中添加如下信息即可,其中“root”是有访问hadoop集群的权限用户名
System.setProperty("HADOOP_USER_NAME", "root");
4检查/tmp目录是否存在
如果不存在,创建TEMP
[root@shuang conf.cloudera.hdfs]# hdfs dfs -ls /tmp
ls: `/tmp': No such file or directory
[root@shuang conf.cloudera.hdfs]# hdfs dfs -mkdir /tmp
mkdir: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
如果存在,文件夹修改权限
hdfs dfs -chmod 777 /tmp/
5 hadoop 权限错误 Permission denied: user=root, access=WRITE, inode="/":hdfs:super
关于不能执行Hadoop命令 并报权限问题执行错误
Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
mkdir: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
put: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
这些类似的权限问题都属于同类问题,他是我说我们的执行Hadoop命令的用户没有,执行权限。
刚开始我想解决问题的思路是,将当前用户授权。(这种想法是不正确的,不要为了简化输入命令,就试图修改这些东西)
现在的想法:用的他指定的用户去执行
[root@cdh1 data]#sudo -u hdfs hadoop fs -mkdir /newFile
或者[root@cdh1 data]#sudo -u hdfs dfhs dfs -mkdir /newFile
使用上面执行相应的命令就ok
我顺便说一下,为什么会出现这样的问题Permission denied
。
如果你是用tar 包解压缩的方式,手动配置的,肯定不会出现这些问题。
我第一次是用,cloudera manager 安装,选择的是enterprise 60天的那个。安装完成也没有问题。
第二次是用现在这种方式安装的。选择的是第一个,免费版。
其实这个也不算是安装上的问题。因为你用yarn安装的时候,他默认会用这个用户安装,这个就相当于,Linux的超级用户,他是Hadoop的超级用户组的用户。