2015-12-21 120 views
1

如果我像我一样运行配置单元,我可以查询表。HDFS用户的Hive查询失败

,但如果我运行使用sudo -u hdfs hive

然后我所有的查询失败,出现错误消息

Application application_1447966350718_10654 failed 2 times due to AM Container for appattempt_1447966350718_10654_000002 exited with exitCode: -1000 
For more detailed output, check application tracking page:http://vtdevana-cloudera11.dealer.ddc:8088/proxy/application_1447966350718_10654/Then, click on links to logs of each attempt. 
Diagnostics: Application application_1447966350718_10654 initialization failed (exitCode=255) with output: main : command provided 0 
main : user is nobody 
main : requested yarn user is hdfs 
Can't create directory /yarn/nm/usercache/hdfs/appcache/application_1447966350718_10654 - Permission denied 
Did not create any app directories 
Failing this attempt. Failing the application. 

我该怎么办,这样我可以使用HDFS用户查询蜂巢蜂巢的壳呢?

回答

2

/yarn/nm/usercache/hdfs/appcache/application_1447966350718_10654”是本地文件系统上的路径。

在您的yarn-site.xml中,有配置参数:yarn.nodemanager.local-dirs

该参数的描述是:

的目录列表存储在 本地化文件的应用程序的本地化的文件目录将中 发现: ${yarn.nodemanager.local-dirs}/usercache/${user}/appcache/application_${appid}。 个别容器的工作目录(称为容器_ $ {contid}, )将成为此目录的子目录。

所以,在你的情况下,这个参数已经被设置为:

yarn.nodemanager.local-dirs=/yarn/nm/ 

所以,当你尝试执行蜂巢查询作为用户hdfs它试图在你的本地文件系统创建以下文件夹并且由于缺乏权限,操作失败:

${yarn.nodemanager.local-dirs}/usercache/${user}/appcache/application_${appid} 

被翻译成

/yarn/nm/usercache/hdfs/appcache/application_1447966350718_10654 

${yarn.nodemanager.local-dirs}” 是由 “/yarn/nm
hdfs
${appid}1447966350718_10654

为了解决这个问题 ”改为“ ”${user}"改为“ 代替,你需要为所有用户提供写入权限至顶层文件夹:/yarn/nm/