HDFS用户的Hive查询失败

时间:2015-12-21 16:48:42

标签: hadoop hive yarn

如果我像我一样运行hive shell,我可以查询表。

但如果我使用sudo -u hdfs hive

运行hive shell

然后我的所有查询都失败并显示错误消息

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用户查询配置单元?

1 个答案:

答案 0 :(得分: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}。   单个容器的工作目录,称为container _ $ {contid},   将是这个的子目录。

因此,在您的情况下,此参数已设置为:

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

因此,当您尝试以用户hdfs执行Hive查询时,它会尝试在本地文件系统中创建以下文件夹,并且由于缺少权限,操作将失败:

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

被翻译成

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

${yarn.nodemanager.local-dirs}”替换为“/yarn/nm”   “${user}"替换为”hdfs“   “${appid}”替换为“1447966350718_10654

要解决此问题,您需要向顶级文件夹的所有用户授予写入权限:/yarn/nm/