【Hadoop & Ecilpse】Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=bruce, access=WRITE, inode="/out2/_temporary/0":atguigu:supergroup:drwxr-xr-x
问题再现:
使用本机 Ecilpse (Windows环境) 去访问远程 hadoop 集群出现以下异常:

问题原因:
因为远程提交的情况下如果没有 hadoop 的系统环境变量,就会读取当前主机的用户名,所以 hadoop 集群的节点中没有该用户名的权限,所以出现的异常。
问题解决:
a、如果是测试环境,可以取消 hadoop hdfs 的用户权限检查。打开 conf/hdfs-site.xml,找到 dfs.permissions 属性修改为 false(默认为true),然后配置分发到其它节点,然后重启集群。此法没有效果。
b、修改 hadoop location 参数,在 advanced parameter 选项卡中,找到 hadoop.job.ugi 项,将此项改为启动 hadoop 的用户名即可。(注意第一次设置的时候可能没有 hadoop.job.ugi 参数,报错后再去看就有了),此法的参数没有找到!
c、因为 Eclipse 使用 hadoop 插件提交作业时,会默认以 当前主机的用户名 的身份去将作业写入 HDFS 文件系统中,由于 当前主机的用户名 对 hadoop 目录并没有写入权限,所以导致异常的发生。
解决方法为:放开 hadoop 目录的权限 ,命令如下 :$ hadoop fs -chmod 777 / # 表示为整个根目录开放权限,不推荐此法!
d、远程提交,如果没有 hadoop 的系统环境变量,就会读取当前主机的用户名,结果 hadoop 集群中没有该用户,所以就异常了。
解决方法为:在远程 Linux 上将 export HADOOP_USER_NAME = bruce 添加到 ~/.bash_profile 中,然后生效该文件 $ source ~/.bash_profile ,不推荐此法!
e、执行 login.login 的时候调用了 hadoop 里面的 HadoopLoginModule 方法,而关键是在 commit 方法里面,在这里优先读取 HADOOP_USER_NAME 系统环境变量,然后是 java 环境变量 中的 HADOOP_USER_NAME ,如果再没有就从 NTUserPrincipal 等里面取。即 只要 在系统的环境变量里面添加 HADOOP_USER_NAME=xxx(xxx 是 HDFS 上的有权限的用户,具体看自己的情况),或者在当前 JDK 的变量参数里面添加 HADOOP_USER_NAME 这个 Java变 量。推荐此法!如下图:

f、再代码中加入 System.setProperty("HADOOP_USER_NAME", "atguigu") ,此法没有测试过!
g、或者设置 conf/hdfs-site.xml,此法没有测试过!
<property>
<name>hadoop.security.authentication</name>
<value>simple</value>
</property>
附录
hadoop 的整个登录过程
login.login();
这个会调用 HadoopLoginModule 的 login() 和 commit()方法。
HadoopLoginModule 的 login() 方法是一个空函数,只打印了一行调试日志 LOG.debug("hadoop login");
commit() 方法负责把 Principal 添加到 Subject 中。
此时一个首要问题是 username 是什么?
在使用了 kerberos 的情况下,从 javax.security.auth.kerberos.KerberosPrincipal 的实例获取 username。
在未使用 kerberos 的情况下,优先读取 HADOOP_USER_NAME 这个系统环境变量,如果不为空,那么拿它作 username。否则,读取 HADOOP_USER_NAME 这个 java 环境变量。
否则,从 com.sun.security.auth.NTUserPrincipal 或者 com.sun.security.auth.UnixPrincipal 的实例获取 username。
如果以上尝试都失败,那么抛出异常 LoginException("Can’t find user name")。
最终拿 username 构造 org.apache.hadoop.security.User 的实例添加到 Subject 中。
参考
https://blog.csdn.net/lunhuishizhe/article/details/50489849
https://blog.csdn.net/wireless_com/article/details/51192713
【Hadoop & Ecilpse】Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=bruce, access=WRITE, inode="/out2/_temporary/0":atguigu:supergroup:drwxr-xr-x的更多相关文章
- 报错:HDFS IO error org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/yk/dl/alarm_his":hdfs:supergroup:drwxr-xr-x
报错背景: CDH集成了Flume服务,准备通过Flume将kafka中的数据放到HDFS中, 启动Flume的时候报错. 报错现象: // :: INFO hdfs.HDFSDataStream: ...
- Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=lenovo, access=WRITE, inode="/user/hadoop/spark/people_savemode_test/_temporary/0":hadoop:supergro
保存文件时权限被拒绝 曾经踩过的坑: 保存结果到hdfs上没有写的权限 通过修改权限将文件写入到指定的目录下 * * * $HADOOP_HOME/bin/hdfs dfs -chmod 777 /u ...
- Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=Mypc, access=WRITE, inode="/":fan:supergroup:drwxr-xr-x
在window上编程提示没有写Hadoop的权限 Exception in thread "main" org.apache.hadoop.security.AccessContr ...
- kylin cube测试时,报错:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
异常: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, i ...
- 一脸懵逼加从入门到绝望学习hadoop之 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=Administrator, access=WRITE, inode="/":root:supergroup:drwxr-xr报错
1:初学hadoop遇到各种错误,这里贴一下,方便以后脑补吧,报错如下: 主要是在window环境下面搞hadoop,而hadoop部署在linux操作系统上面:出现这个错误是权限的问题,操作hado ...
- 异常-Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=hdfs, access=WRITE, inode="/hbase":root:supergroup:drwxr-xr-x
1 详细异常 Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlExce ...
- hadoop 3.x org.apache.hadoop.security.AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="/":tele:supergroup:drwxr-xr-x
权限不足,上传文件时应当使用启动hadoop的账户,即在获取FileSystem时就应当指定用户 修改后的代码 public class Demo1 { public static void main ...
- org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="hadoop": hadoop:supergroup:rwxr-xr-x
这时windows远程调试hadoop集群出现的这里 做个记录 我用改变系统变量的方法 修正了错误 网上搜索出来大概有三种: 1.在系统的环境变量或java JVM变量里面添加HADOOP_USE ...
- 本地连接 HDFS 报错 Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=JM.H,access=WRITE, inode="":r
此时 到hdfs机器下修改hdfs-site.xml即可 添加如下配置 <property> <name>dfs.permissions</name> <va ...
随机推荐
- 59. Spiral Matrix II (Array)
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...
- sql server 日期转换
一.时间函数 在使用存储过程,sql函数的时候,会遇到一些对时间的处理.比如时间的获取与加减.这里就用到了sql自带的时间函数.下面我列出这些函数,方便日后记忆,使用. --getdate 获取当前时 ...
- Golang之字符串操作(反转中英文字符串)
//字符串反转package main import "fmt" func reverse(str string) string { var result string strLe ...
- Java程序设计19——类的加载和反射-Part-B
接下来可以随意提供一个简单的主类,该主类无须编译就可使用上面的CompileClassLoader来运行它. package chapter18; public class Hello { publi ...
- Under-sampling
Under sampling When the signal frequency is high, and the tester frequency can’t catch the signal ...
- [转]Android Parcelable和Serializable的区别
本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存 ...
- pom.xml的继承、聚合与依赖
原文地址:https://my.oschina.net/zh119893/blog/232896 6.1 简介 pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置M ...
- CSS3: box-sizing & content-box 属性---元素的border 和 padding 影响内容的 width 和 height解决方案
/* 关键字 值 */ box-sizing: content-box; box-sizing: border-box; /* 全局 值 */ box-sizing: inherit; box-siz ...
- Mysql命令行查看数据库大小(数据库版本为5.7以上)
数据库版本为5.7以上1.选择数据库use mydb1; 2.查看指定数据库表结构select * from information_schema.TABLES where information_s ...
- EM 最大似然概率估计
转载请注明出处 Leavingseason http://www.cnblogs.com/sylvanas2012/p/5053798.html EM框架是一种求解最大似然概率估计的方法.往往用在存在 ...