解决“org.apache.hadoop.security.AccessControlException”
2015-12-09 09:55
246 查看
在运行某个Spark Application的时候,需要向Hdfs写入文件,控制台会输出以下错误信息:
从中很容易看出是因为当前执行Spark Application的用户没有Hdfs“/user”目录的写入权限。这个问题无论是在Windows下还是Linux下提交Spark Application都经常会遇到。常见的解决方法有以下几种。
关闭Hdfs的安全检查(permission checking):将hdfs-xml中 dfs.permissions 属性的值设置为 false 。但是这种方法的弊端是会导致Hdfs系统中所有的安全特性都被禁用,使Hdfs的安全性降低。
Hdfs的用户权限是与本地文件系统的用户权限绑定在一起的,根据错误中的
我们可以发现,Hdfs中的/user目录是属于supergroup组里的root用户的。因此我们可以想到用两种方法解决这个问题:
修改执行操作的用户为该目录所属的用户。但是这种方法的弊端在于,与Hdfs进行交互的用户可能有很多,这会导致经常修改执行类似操作的用户。
因此,个人推荐使用第三种方法:
如果是Linux环境,将执行操作的用户添加到supergroup用户组。
如果是Windows用户,在hdfs namenode所在机器添加新用户,用户名为执行操作的Windows用户名,然后将此用户添加到supergroup用户组。
这样,以后每次执行类似操作可以将文件写入Hdfs中属于Administrator用户的目录内,而不会出现上面的Exception。
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=Administrator, access=WRITE, inode="/user":root:supergroup:drwxr-xr-x
从中很容易看出是因为当前执行Spark Application的用户没有Hdfs“/user”目录的写入权限。这个问题无论是在Windows下还是Linux下提交Spark Application都经常会遇到。常见的解决方法有以下几种。
关闭Hdfs的安全检查(permission checking):将hdfs-xml中 dfs.permissions 属性的值设置为 false 。但是这种方法的弊端是会导致Hdfs系统中所有的安全特性都被禁用,使Hdfs的安全性降低。
Hdfs的用户权限是与本地文件系统的用户权限绑定在一起的,根据错误中的
Permission denied: user=Administrator, access=WRITE, inode="/user":root:supergroup:drwxr-xr-x
我们可以发现,Hdfs中的/user目录是属于supergroup组里的root用户的。因此我们可以想到用两种方法解决这个问题:
修改执行操作的用户为该目录所属的用户。但是这种方法的弊端在于,与Hdfs进行交互的用户可能有很多,这会导致经常修改执行类似操作的用户。
因此,个人推荐使用第三种方法:
如果是Linux环境,将执行操作的用户添加到supergroup用户组。
groupadd supergroup usermod -a -G supergroup spry
如果是Windows用户,在hdfs namenode所在机器添加新用户,用户名为执行操作的Windows用户名,然后将此用户添加到supergroup用户组。
adduser Administrator groupadd supergroup usermod -a -G supergroup Administrator
这样,以后每次执行类似操作可以将文件写入Hdfs中属于Administrator用户的目录内,而不会出现上面的Exception。
相关文章推荐
- Windows XP下 安装和配置Apache2.2.22服务器+PHP5+Mysql5
- Apache JMeter中正则表达式提取器的使用方法
- Windows下搭建php7+Apache2.4
- 看我学习Apache+php+wordpress+phpMyAdmin的搭配配置
- LAMP 2.4 Apache访问控制
- apache+weblogic虚拟主机配置
- LAMP 2.3 Apache配置防盗链
- LAMP 2.2 Apache配置静态缓存
- LAMP 2.1Apache不记录指定文件类型日志
- Ubuntu上apache多端口配置虚拟主机的方法
- apache配置,禁止指定后缀访问
- LAMP 2.0Apache日志切割
- Apache FTPClient操作“卡死”问题的分析和解决
- 安装Apache后,恢复系统后修复Apache服务问题
- 如何在 apache 中开启 gzip 压缩服务
- Linux下安装、配置、启动Apache
- 10个强大的Apache开源模块
- ubuntu-14.04服务器版下搭建apache2+svn+svnmanager服务
- laravel无法正确路由,开启Apache mod_rewrite模块
- apache AB参数说明