文章目录
- 1. 提出问题
- 2. 解决问题
- 2.1 临时解决方案
- 2.2 永久解决方案
- 3. 小结
1. 提出问题
- 运行
DeduplicateIPsDriver
类,抛出如下异常:
- 该错误信息表明在尝试运行
DeduplicateIPsDriver
类时,遇到了 HDFS(Hadoop 分布式文件系统)的权限问题。具体来说,用户huawei
没有对/deduplicateips
目录的写权限。该目录的所有者是root
,所属组是supergroup
,当前的权限设置(drwxr-xr-x
)只允许所有者进行写操作,而其他用户只能读取和执行。
2. 解决问题
2.1 临时解决方案
- 执行命令:
hdfs dfs -chmod -R 775 /deduplicateips
,通过设置权限,确保只有授权用户或组可以修改/deduplicateips
目录中的内容,同时其他用户可以读取和执行。
- 执行命令:
hdfs dfs -chown -R huawei:supergroup /deduplicateips
,更改所有者:将/deduplicateips
目录及其内容的所有者设置为huawei
,这意味着huawei
用户对该目录及其内容拥有完全控制权。更改组:将/deduplicateips
目录及其内容的组设置为supergroup
,这意味着supergroup
组的成员可以根据组权限访问该目录及其内容。
- 再次运行
DeduplicateIPsDriver
类
- 换一个目录来做,又会遇到同样的权限问题,还需要执行上述两条命令来设置权限。
2.2 永久解决方案
- Hadoop集群三个节点的
hdfs-site.xml
文件添加一个属性 - 执行命令:
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<!--设置HDFS访问权限检查,false表示关闭-->
<property><name>dfs.permissions.enabled</name><value>false</value>
</property>
- 重启Hadoop服务,就可以彻底解决本地运行MR程序访问权限问题。
3. 小结
- 在运行
DeduplicateIPsDriver
类时,遇到HDFS访问权限问题。临时解决方案是通过hdfs dfs -chmod
和hdfs dfs -chown
命令调整目录权限和所有者。永久解决方案是在Hadoop集群的hdfs-site.xml
文件中添加dfs.permissions.enabled
属性并设置为false
,关闭权限检查,重启Hadoop服务后彻底解决问题。