我有一个oozie工作流运行一个hive操作。配置单元操作非常简单,它只是从一个表拷贝读取到另一个表。作业运行时具有以下属性:
user.name=yarn
mapreduce.job.user.name=cloudfeeds
作业失败,出现以下错误:
15/07/16 18:45:25 INFO mapreduce.Job: Job job_1435680786374_0060 failed with state FAILED due to: Application application_1435680786374_0060 failed 2 times due to AM Container for appattempt_1435680786374_0060_000002 exited with exitCode: -1000
For more detailed output, check application tracking page:http://master-1.local:8088/proxy/application_1435680786374_0060/Then, click on links to logs of each attempt.
Diagnostics: Permission denied: user=cloudfeeds, access=EXECUTE, inode="/user/yarn/.staging":yarn:hdfs:drwx------
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:271)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:257)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:208)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:171)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:6795)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:4387)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:855)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:835)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2039)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2035)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2033)
我不明白为什么user cloudfeeds需要访问/user/yarn/.staging目录。如果作业作为user cloudfeeds运行,它不应该尝试访问/user/cloudfeeds/.staging吗?
我该怎么解决这个问题?
谢谢,-新田
4条答案
按热度按时间w46czmvw1#
授予cloudfeeds用户对暂存目录的权限。任何执行应用程序的用户都需要访问临时目录。因此,要么为所有这些用户所属的组设置acl,要么盲目地授予777权限。
uurity8g2#
虽然我不完全明白为什么,但当我们从hdp2.2.4升级到hdp2.2.6时,问题就消失了。我们没有更改任何代码或配置文件。
kqlmhetl3#
运行下面的hdfs命令,
-r表示应用于其所有子目录。上面的命令对该目录及其所有子目录的所有用户应用完全权限。
或者,如果启用了ACL,则可以为特定用户设置权限,如下所示,
r1zk6ea14#
如果您验证了core-site.xml,应该为所有具有
还要检查hdfs-site.xml权限状态意味着什么,它应该设置为false:
这同样有助于挖掘问题