在 Linux 上运行 Hadoop 时经常遇到“权限错误(Permission denied)”问题,通常不是 Linux 文件权限本身,而是 Hadoop 自身的权限模型 + Linux 用户/目录权限 共同作用导致的。下面按常见原因 → 解决办法说明。
Hadoop 默认会用 当前 Linux 用户 去访问 HDFS。
例如:
roothadoop就会报:
Permission denied: user=root, access=WRITE, inode="/user":hadoop:supergroup:drwxr-xr-x
✅ 解决:
su - hadoop
或启动时指定用户:
export HADOOP_USER_NAME=hadoop
HDFS 有类似 Linux 的权限(owner / group / other)
常见错误:
Permission denied: user=xxx, access=WRITE, inode="/user/xxx"
✅ 解决:
hdfs dfs -mkdir -p /user/yourname
hdfs dfs -chown yourname:supergroup /user/yourname
或临时开放(不推荐生产):
hdfs dfs -chmod 777 /user
Hadoop 进程用户对本地目录没有权限。
例如:
mkdir: cannot create directory ‘/data/hadoop/dfs/name’: Permission denied
✅ 解决:
sudo chown -R hadoop:hadoop /data/hadoop
chmod 755 /data/hadoop
Hadoop 不建议用 root 启动
错误示例:
org.apache.hadoop.security.AccessControlException: Permission denied
✅ 解决:
useradd hadoop
su - hadoop
hdfs-site.xml 中:
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
但 没有重启 NameNode
✅ 解决:
stop-dfs.sh
start-dfs.sh
例如:
Cannot write to output directory
原因:
✅ 解决:
hdfs dfs -rm -r /output
whoami # 当前 Linux 用户
hdfs dfs -ls / # 是否能访问 HDFS
hdfs dfs -ls /user # 是否有自己的目录
ps -ef | grep hadoop # Hadoop 以谁启动
<!-- core-site.xml -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
<!-- hdfs-site.xml -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
Hadoop 报权限错,90% 是因为“Linux 用户 ≠ HDFS 用户”或“目录权限没配好”。
如果你能贴出 具体报错日志,我可以直接帮你定位是哪一类问题。