HADOOP在处理HIVE时权限错误的解决办法

今天,小乔操作时发现问题:

 

org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:265)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:251)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:232)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:176)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5490)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5472)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:5446)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInternal(FSNamesystem.java:3600)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInt(FSNamesystem.java:3570)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:3544)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:739)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:558)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1026)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1986)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1982)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1980)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)
at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:73)
at org.apache.hadoop.hdfs.DFSClient.primitiveMkdir(DFSClient.java:2549)
at org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:2518)
at org.apache.hadoop.hdfs.DistributedFileSystem$16.doCall(DistributedFileSystem.java:827)
at org.apache.hadoop.hdfs.DistributedFileSystem$16.doCall(DistributedFileSystem.java:823)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirsInternal(DistributedFileSystem.java:823)
at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:816)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:125)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:348)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1295)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1292)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1292)
at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:562)
at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:557)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:557)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:548)
at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java:425)
at org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:136)
at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:151)
at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:65)
at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1485)
at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1263)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1091)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:931)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:921)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:422)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:790)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:684)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:623)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

 

解决办法网上有很多,差不多都是同样的,用修改配置的办法解决,,呵呵,我们用CDH实例时,WEB界面也可以解决的。。

conf/hdfs-core.xml, 找到 dfs.permissions 的配置项 , 将value值改为 false

<property>
<name>dfs.permissions</name>
<value>false</value>
<description>
If "true", enable permission checking in HDFS.
If "false", permission checking is turned off,
but all other behavior is unchanged.
Switching from one parameter value to the other does not change the mode,
owner or group of files or directories.
</description>
</property>

解决办法:

1)修改Hive配置文件Hive的中间数据输出路径指向其他目录

cd /opt/hive-0.9.0/conf

vi hive-site.xml  #修改如下:

<property>

  <name>hive.exec.scratchdir</name>

  <value>/hive_tmp/hive-${user.name}</value> #将hdfs:///hive_tmp目录作为Hive的中间数据路径

  <description>Scratch space for Hive jobs</description>

</property>

 

2)修改目录hdfs:///hive_tmp的所属用户和用户组

hadoop fs -chown -R common_user:common_group /hive_tmp/*

#修改目录hdfs:///hive_tmp的读写权限确保目录对用户组common_group内的所有用户可访问(rwx)

hadoop fs -chmod g+w /hive_tmp/*

 

3)将普通用户user1,user2...等添加到用户组common_group

usermod -a -G common_group user1

 

4)转换用户到user1测试Hive查询

su user1

hive -e 'select * from taxi where speed > 150;'

# 查询成功

时间: 2024-11-10 00:41:39

HADOOP在处理HIVE时权限错误的解决办法的相关文章

PHPExcel导出Excel文件时出现错误的解决办法

PHPExcel是PHP中功能最强大的导入.导出.操作Microsoft Excel的开源项目.但是它体系复杂,有时会让人难以掌控. PHPExcel导出Excel表的使用方法网上已经很多了,本文就不赘述.不过,在使用过程中,我却发现了一个莫名其妙的问题:那就是使用PHPExcel自动导出excel的文件有时候能够正常导出并打开,有时候生成的excel文件却无法打开,Excel2007提示"发现无法读取的内容". 使用文本编辑器打开生成的Excel文件,发现一行提示"Fata

安装Mysql时出现错误及解决办法_Mysql

因为一时手痒痒更新了一下驱动,结果导致无线网卡出了问题.然而就算是从官网上下载了驱动各种折腾也没有弄好,心里特别堵.无奈只有重装系统这一条路了.这里表示特别难过,因为电脑上东西实在太多了,而且各种环境变量.所以建议一些对电脑特不是别精通的最好不好胡乱倒腾(像我这样的人),除非你想专门研究. 重装的悲剧就是所有的软件都得重新配置.有点不太情愿,因为毕竟没有太多的闲时间.但是,也有点小确幸,因为一直在学习其他的知识,开始的时候配置好的东西就再也没有研究过,只觉得配好了就很高兴,因为这样就可以接着做下

U盘复制大文件时发生错误的解决办法

  朋友买了一块8G的U盘,他往U盘中拷贝了一4.3G的系统文件系统就提示错误,而这个U盘可是有8G的总容量啊,他不由得担心起来,认为自己可能买到假货,并想找我同他一起去找商家更换产品! 其实,出现上述情况,并不是他的U盘有问题.这都是文件系统惹的祸!原来目前的移动存储器,包括U盘.移动硬盘等,都是采用的FAT32文件系统.而在FAT32文件系统下,是不能存储超过4G的文件的. 那么如何来解决这个问题呢?很简单,只要将U盘的格式改为NTFS就可以了,在"运行"中输入"CMD&

安装Office2007时出现1402错误的解决办法

  Office2007是一款常见的办公软件,很多电脑用户都在使用.今天,我们就来跟大家分享一些关于在电脑中安装Office2007的一些技巧.一些电脑用户在安装Office2007的时候,遇到了在安装到差不多要完成的时候一直都不动了,安装的进度条往回滚,然后就提示Microsoft Office2007在安装过程中出错,错误ERROR 1402,安装程序无法打开注册表项,跟住一串很的字母和数字,请确认你有访问注册表的权限.经过搜索,找到了解决办法,就是用一个小工具对系统进行修复,修复后就可以成

Win7 IIS7.5运行ASP时出现500错误的解决办法_win服务器

http 500内部服务器错误说明IIS服务器无法解析ASP代码,如果你联网还发现找不到服务器就是500错误了. 在iis7里面的iis设置要开启启用父路径这个选项,之后就可以了,当然为了调试程序可以打开"ASP设置选项-调试属性"里面的一些调试功能,方便程序的调试. Win7 IIS7.5运行ASP时出现500错误的解决办法 请确保在你的电脑上IIS配置完成了,静态页面能打开了,但是打开ASP就会出现500错误.再进行下面配置.具体如下: 一.进入"C:\Windows\S

解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法_MsSql

SQL SERVER数据库进行备份时出现"操作系统错误5(拒绝访问).BACKUP DATABASE 正在异常终止."错误.我们应该如何解决这个问题?小编今天为大家推荐一个解决办法. 一般备份文件选择的目录为磁盘根目录或备份所选分区未授予sqlserver用户读写权限时会出现此错误. 解决办法就是给sqlserver用户授予权限:    选择要备份的文件夹 ,右键-->属性-->安全-->看下"组或用户"是否包涵Authenticated User

打开Microsoft Office软件时出现错误如何解决

  打开Microsoft Office软件时出现错误如何解决         ①单击开始按钮--所有程序--Microsoft Office工具--Microsoft Office诊断. ②弹出诊断界面,单击继续按钮开始. ③一切准备就绪,运行诊断. ④耐心等待,工具会自动完成office的诊断. ⑤诊断结束,完成修复. wps教程 word教程 Excel教程

Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法_php实例

一.发现问题 在尝试编辑博客站点的Wordpress主题时,突然发现博客站点无法连接:刷新后提示"建立数据库连接错误"之类的错误.自然想到是mysql可能出错了,所以就登陆了VPS主机,尝试启动mysql服务,但是提示failed. 二.解决方法 1.打开/var/log/mysql/error.log文件,查看出错日志.在阅读日志时发现第一条错误提示是:[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrad

win7连接VPN时提示800错误怎么办 连接VPN时提示错误800解决方法

win7连接VPN时提示错误800解决方法 1.重启电脑并关闭网络连接,然后将软件和硬件的防火墙关闭掉,电脑杀毒软件自带的防火墙和路由器等设备的防火墙. 2.将VPN设备端口1723上的TCP协议中的窗口大小修改为0. 3.重新配置VPN主机的网络设置. 4.如果无法解决,建议联系设备制造商进行解决. 以上就是关于win7系统设置vpn虚拟连接教程介绍了,通过以上分享后,遇到相同问题的用户,请参照以上方法设置吧.