确保Ubuntu系统已安装Hadoop并完成基础配置(如core-site.xml、hdfs-site.xml、yarn-site.xml等),且HDFS服务已启动。可通过start-dfs.sh启动HDFS,使用hdfs dfsadmin -report检查集群状态。
修改Hadoop配置文件(位于$HADOOP_HOME/etc/hadoop/),启用权限检查和ACL功能:
core-site.xml:添加用户映射配置(可选,用于解决用户UID不一致问题)。<property>
<name>hadoop.security.uid.mapping</name>
<value>org.apache.hadoop.security.uid.mapping.SimpleUIDMapping</value>
</property>
<property>
<name>hadoop.security.uid.mapping.file</name>
<value>/etc/hadoop/conf/users.map</value>
</property>
hdfs-site.xml:启用权限检查和ACL,设置超级用户组(如hadoop)。<property>
<name>dfs.permissions</name>
<value>true</value> <!-- 启用权限检查 -->
</property>
<property>
<name>dfs.namenode.supergroup</name>
<value>hadoop</value> <!-- 超级用户组(拥有所有权限) -->
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value> <!-- 启用ACL -->
</property>
<property>
<name>dfs.permissions.umask-mode</name>
<value>022</value> <!-- 默认权限掩码(目录755,文件644) -->
</property>
保存后,重启HDFS使配置生效:stop-dfs.sh && start-dfs.sh。HDFS权限基于Linux用户/组模型,需先在Ubuntu中创建用户和组,并同步到HDFS:
sudo groupadd hadoop # 创建hadoop组
sudo useradd -g hadoop hadoop_user # 创建hadoop_user并加入hadoop组
sudo passwd hadoop_user # 设置用户密码
hdfs dfs -mkdir -p /user/hadoop_user # 创建用户目录
hdfs dfs -chown hadoop_user:hadoop /user/hadoop_user # 设置所有者和组
此时,hadoop_user可在HDFS中访问自己的目录。通过hdfs dfs命令设置文件/目录的权限和所有权:
chmod设置权限(格式:755=所有者可读写执行,组和其他人可读执行;644=所有者可读写,组和其他人可读)。hdfs dfs -chmod 755 /user/hadoop_user # 设置目录权限
hdfs dfs -chmod 644 /user/hadoop_user/test.txt # 设置文件权限
chown更改文件/目录的所有者和组。hdfs dfs -chown hadoop_user:hadoop /user/hadoop_user/test.txt # 更改所有者和组
ls查看文件/目录的权限信息。hdfs dfs -ls /user/hadoop_user # 查看目录权限
ACL提供更细粒度的权限控制(如为用户/组单独设置权限),适用于需要共享目录的场景:
setfacl命令为用户或组添加权限(如给flink_user添加rwx权限)。hdfs dfs -setfacl -m user:flink_user:rwx /user/hadoop_user/shared_dir # 给用户添加权限
hdfs dfs -setfacl -m group:analytics_group:r-x /user/hadoop_user/shared_dir # 给组添加读取执行权限
getfacl命令查看目录的ACL规则。hdfs dfs -getfacl /user/hadoop_user/shared_dir # 查看ACL详情
-R参数。hdfs dfs -setfacl -R -m user:flink_user:rwx /user/hadoop_user/shared_dir
通过不同用户登录HDFS,测试权限是否生效:
su命令切换到目标用户(如hadoop_user)。su - hadoop_user
hdfs dfs -ls /user/hadoop_user # 应能正常访问自己的目录
hdfs dfs -ls /user/flink_user # 若无权限,应提示“Permission denied”
chmod增加权限(如hdfs dfs -chmod 755 /path),或用hdfs dfs -chown修改所有者。/etc/hadoop/conf/users.map文件(格式:ubuntu_user hdfs_uid),并重启HDFS。通过以上步骤,可在Ubuntu上完成HDFS权限配置,确保数据的安全性和访问控制。