在 CentOS 上使用 HDFS 时,“HDFS 用户名”通常有两种理解,下面分别说明:
HDFS 一般不建议用 root 启动,而是用专门用户,比如 hdfs 或 hadoop。
useradd hdfs
passwd hdfs
chown -R hdfs:hdfs /usr/local/hadoop
chown -R hdfs:hdfs /data/hadoop
su - hdfs
start-dfs.sh
✅ 这是“HDFS 服务运行用户”
HDFS 本身没有独立密码体系,它直接使用 Linux 用户名 作为 HDFS 用户。
如果你在 CentOS 上是用户 zhangsan:
hdfs dfs -ls /
那么 HDFS 认为你是 zhangsan
hdfs dfs -whoami
如果你不是用对应 Linux 用户登录,可以通过环境变量指定:
export HADOOP_USER_NAME=hdfs
hdfs dfs -ls /
或者在 Java 程序中:
System.setProperty("HADOOP_USER_NAME", "hdfs");
默认情况下:
hdfs只有超级用户可以:
hdfs dfs -chown hdfs:hdfs /test
❌ Permission denied: user=root, access=WRITE
export HADOOP_USER_NAME=hdfs
或切换用户:
su - hdfs
| 场景 | 设置方式 |
|---|---|
| HDFS 服务用户 | useradd hdfs |
| 客户端用户 | Linux 用户名 |
| 临时指定用户 | HADOOP_USER_NAME |
| 超级用户 | NameNode 启动用户 |
如果你说的是 Kerberos / 安全模式 / 多租户,可以继续问我。