从大数据研发的角度解决org.apache.hadoop.security.AccessControlException: Permission denied: user=***,不需修改集群配置文件

1 篇文章 0 订阅
1 篇文章 0 订阅
  • 前言:

       该异常的解决方法在网上确实已经很多了,但是楼主们都没有考虑到一个问题么?那就是身为大数据研发团队的我们,有权限轻易的去修改hadoop集群的配置文件么?就算有权限修改,万一耦合度较高的文件被修改,我们要去哭着求运维帮我们擦屁股么?很显然小编这篇小短文是在不动运维配置好的配置文件的基础上,解决远程提交hadoop任务出现的AccessControlException,跟这小编往下走吧。

  • 出现异常的情况:

  1. 远程提交任务给Hadoop 可能会遇到 "org.apache.hadoop.security.AccessControlException:Permission denied: user=..."
  2. 如果是spark over YARN, 也同样会遇到类似的问题
org.apache.hadoop.security.AccessControlException: Permission denied: user=czx, access=WRITE, inode="/user/czx/.sparkStaging/application_1580634218023_0002”:hdfs:hdfs:drwxr-xr-x
  • 为什么产生异常信息:

        原因很简单,因为远程提交的情况下如果没有hadoop 的系统环境变量,就会读取当前主机的用户名,所以Hadoop集群的节点中没有该用户名的权限,所以出现的异常。

  • 解决方案(小编个人推荐方法2):

       1、

        将:export HADOOP_USER_NAME = hdfs 

        添加到 ~/.bash_profile 中,然后执行

        source  ~/.bash_profile 

 

       2、

        将System.setProperty("HADOOP_USER_NAME”,“hdfs”);     

        添加到代码的main方法首部,

        该语句的意思是修改代码的系统变量HADOOP_USER_NAME的内容为hdfs

 

当然,如果大家在公司里是大数据业务的全权负责人,不妨也可以使用网上常说的修改hadoop的配置文件来解决该问题。

 

另外,如果大家有更好的方法解决问题,可以下方留言一起交流。

 

最后,小编想告诉大家,要以工程师的方式解决问题,以科学家的方式思考问题。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值