如果我像我一样运行hive shell,我可以查询表。
但如果我使用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用户查询配置单元?
答案 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/