文章目录
- 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服务后彻底解决问题。