Hive匿名用户导致的权限问题

在上次的Hive集群中变动后,跑起任务时出了个异常,数据在Mysql抽取到Hive时正常,但在进行维度分析、数据统计时就报错了:

 

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=anonymous, access=EXECUTE, inode="/tmp/hadoop-yarn/staging/anonymous/.staging/job_1481887037593_0047":hadoop:supergroup:drwxrwx---

此日志来自hive.log文件中,根据上面很容易看出是权限的问题;由于sqoop连接Hive时没有使用认证用户操作,就默认使用hive-default.xml文件中的anonymous用户提交任务;所以在HDFS上创建文件目录时的用户就变成了anonymous;

解决方法:修改hive-default.xml 

  1. <property> 
  2.     <name>hive.server2.thrift.client.user</name> 
  3.     <value>anonymous</value> 
  4.     <description>Username to use against thrift client</description> 
  5. </property> 
  6. <property> 
  7.     <name>hive.server2.thrift.client.password</name> 
  8.     <value>anonymous</value> 
  9.     <description>Password to use against thrift client</description> 
  10. </property> 

把上面的两个anonymous 分别改成运行Hadoop的用户和密码;重新启动Hive 的metastore 服务和 hiveserver2服务;此时就算sqoop配置不加入用户、密码也会以上面修改的用户来执行;