封尘网

让学习成为一种习惯!

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

<property>
    <name>hive.server2.thrift.client.user</name>
    <value>anonymous</value>
    <description>Username to use against thrift client</description>
</property>
<property>
    <name>hive.server2.thrift.client.password</name>
    <value>anonymous</value>
    <description>Password to use against thrift client</description>
</property>

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

提醒:本文最后更新于 918 天前,文中所描述的信息可能已发生改变,请谨慎使用。