0

简短的介绍:

我正在运行一个带有 hadoop 命令的 shell 脚本。和奥齐。

下面是我试图运行的 shell 脚本:

#!/bin/bash 
hdfs dfs  -mkdir /user/etp8117/testdir

工作流.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<workflow-app xmlns="uri:oozie:workflow:0.5" name="test_oozie">
  <start to="shell_1"/>
  <action name="shell_1">
       <shell xmlns="uri:oozie:shell-action:0.1">
          <job-tracker>${resourceManager}</job-tracker>
           <name-node>${nameNode}</name-node>
            <exec>test.sh</exec>
        <env-var>HADOOP_USER_NAME=${wf:user()}</env-var>
             <file>/user/etp8677/oozie_test/test.sh</file>
   </shell>
       <ok to="end"/>
        <error to="kill"/>
   </action>
       <kill name="kill">
        <message>${wf:errorMessage(wf:lastErrorNode())}</message>
    </kill>
     <end name="end"/>
 </workflow-app>

工作属性:

nameNode=hdfs://CKNOS6VJFS01
resourceManager=slmupd5hmn03.zres.ztech:8050
queueName=default
outputDir=hdfs://CKNOS6VJFS01/user/etp8117/
oozie.use.system.libpath=false
wf:user()=etp8117
oozie.system.id=etp8117

oozie.wf.application.path=hdfs://CKNOS6VJFS01/user/etp8117/oozie_test/workflow.xml user.name=etp8117 mapreduce.job.user.name=etp8117

执行 oozie 作业时出现以下错误:

 
开始操作 [shell_1] 时出错。ErrorType [TRANSIENT], ErrorCode [JA009], Message [JA009: Permission denied: user=etp8677, access=WRITE, inode="/user/ETP8117@ZGIE.ZTECH/oozie-oozi/0000001-190123054344212-oozie-oozi-W /shell_1--shell.tmp":hdfs:hdfs:drwxr-xr-x
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:353)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:325)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:246)
        在 org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer$RangerAccessControlEnforcer.checkDefaultEnforcer(RangerHdfsAuthorizer.java:428)
        在 org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer$RangerAccessControlEnforcer.checkPermission(RangerHdfsAuthorizer.java:278)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1950)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1934)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1917)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.mkdirs(FSDirMkdirOp.java:71)
        在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:4181)
        在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:1109)
        在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:645)
        在 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
        在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)
        在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
        在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2351)
        在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2347)
        在 java.security.AccessController.doPrivileged(本机方法)
        在 javax.security.auth.Subject.doAs(Subject.java:422)
        在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869)
        在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:2347)
]
org.apache.oozie.action.ActionExecutorException: JA009: Permission denied: user=etp8117, access=WRITE, inode="/user/ETP8117@ZGIE.ZTECH/oozie-oozi/0000001-190123054344212-oozie-oozi-W/shell_1 --shell.tmp":hdfs:hdfs:drwxr-xr-x
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:353)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:325)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:246)
        在 org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer$RangerAccessControlEnforcer.checkDefaultEnforcer(RangerHdfsAuthorizer.java:428)
        在 org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer$RangerAccessControlEnforcer.checkPermission(RangerHdfsAuthorizer.java:278)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1950)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1934)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1917)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.mkdirs(FSDirMkdirOp.java:71)
        在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:4181)
        在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:1109)
        在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:645)
        在 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
        在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)
        在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
        在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2351)
        在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2347)
        在 java.security.AccessController.doPrivileged(本机方法)
        在 javax.security.auth.Subject.doAs(Subject.java:422)
        在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869)
        在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:2347)
        在 org.apache.oozie.action.ActionExecutor.convertExceptionHelper(ActionExecutor.java:463)
        在 org.apache.oozie.action.ActionExecutor.convertException(ActionExecutor.java:437)
        在 org.apache.oozie.action.hadoop.JavaActionExecutor.prepareActionDir(JavaActionExecutor.java:664)
        在 org.apache.oozie.action.hadoop.JavaActionExecutor.start(JavaActionExecutor.java:1380)
        在 org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:234)
        在 org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:65)
        在 org.apache.oozie.command.XCommand.call(XCommand.java:287)
        在 org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:331)
        在 org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:260)
        在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
        在 org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:178)
        在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        在 java.lang.Thread.run(Thread.java:745)
引起:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):权限被拒绝:user=etp8117, access=WRITE, inode="/user/ETP8117@ZGIE.ZTECH/oozie-oozi /0000001-190123054344212-oozie-oozi-W/shell_1--shell.tmp":hdfs:hdfs:drwxr-xr-x
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:353)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:325)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:246)
        在 org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer$RangerAccessControlEnforcer.checkDefaultEnforcer(RangerHdfsAuthorizer.java:428)
        在 org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer$RangerAccessControlEnforcer.checkPermission(RangerHdfsAuthorizer.java:278)
        在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1950)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1934)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1917)
        在 org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.mkdirs(FSDirMkdirOp.java:71)
        在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:4181)
        在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:1109)
        在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:645)
        在 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
        在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)
        在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
        在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2351)
        在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2347)
        在 java.security.AccessController.doPrivileged(本机方法)
        在 javax.security.auth.Subject.doAs(Subject.java:422)
        在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869)
        在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:2347)
        在 org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1554)
        在 org.apache.hadoop.ipc.Client.call(Client.java:1498)
        在 org.apache.hadoop.ipc.Client.call(Client.java:1398)
        在 org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:233)
        在 com.sun.proxy.$Proxy31.mkdirs(未知来源)
        在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.mkdirs(ClientNamenodeProtocolTranslatorPB.java:610)
        在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        在 java.lang.reflect.Method.invoke(Method.java:498)
        在 org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:291)
        在 org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:203)
        在 org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:185)
        在 com.sun.proxy.$Proxy32.mkdirs(未知来源)
        在 org.apache.hadoop.hdfs.DFSClient.primitiveMkdir(DFSClient.java:3087)
        在 org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:3057)
        在 org.apache.hadoop.hdfs.DistributedFileSystem$25.doCall(DistributedFileSystem.java:1181)
        在 org.apache.hadoop.hdfs.DistributedFileSystem$25.doCall(DistributedFileSystem.java:1177)
        在 org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
        在 org.apache.hadoop.hdfs.DistributedFileSystem.mkdirsInternal(DistributedFileSystem.java:1195)
        在 org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:1169)
        在 org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1924)
        在 org.apache.oozie.action.hadoop.JavaActionExecutor.prepareActionDir(JavaActionExecutor.java:653)
        ... 11 更多

OOZIE 默认尝试写入不存在的 HDFS 目录。这里是错误:org.apache.oozie.action.ActionExecutorException: FS014: Permission denied: user = etp8117, access = WRITE, inode = "/user/ETP8117@ZGIE.ZTECH/oozie-oozi/0000026-181219054701162-oozie- oozi-W/shell_1--fs/fs-0000026-181219054701162-oozie-oozi-W@shell_1@0":hdfs:hdfs:drwxr-xr-x

它试图创建这个目录:/user/ETP8117@ZGIE.ZTECH/ 这不是我的用户名,而是我的 KERBEROS 令牌。

有人可以帮我解决这个问题吗!!!

4

0 回答 0