[ 
https://issues.apache.org/jira/browse/TEZ-2364?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Siddharth Seth updated TEZ-2364:
--------------------------------
    Attachment: TEZ-2364.1.txt

This happens because the staging dir contains the parameter user.name - which 
gets resolved based on the System property user.name.

On the client, it resolves to the user running the job. On the AM, since this 
is a non secure cluster, and without LCE, this resolves to the user running the 
AM process.

Patch resolves these config properties on the client, before sending it over to 
the AM.

Another option here would be to stop using ${user.name}, and instead explicitly 
add the user via the UGI when constructing the staging directory.

[~hitesh] - please review.


> 'joindatagen' AM picks wrong staging dir
> ----------------------------------------
>
>                 Key: TEZ-2364
>                 URL: https://issues.apache.org/jira/browse/TEZ-2364
>             Project: Apache Tez
>          Issue Type: Bug
>            Reporter: Yesha Vora
>            Assignee: Siddharth Seth
>             Fix For: 0.7.0
>
>         Attachments: TEZ-2364.1.txt
>
>
> joindatagen application is run as hrt_qa user. and tez.staging-dir is set as  
> {noformat}'/tmp/${user.name}/staging'{noformat}
> Here, AM tries to access "/tmp/yarn/staging" dir instead 
> "/tmp/hrt_qa/staging".
> {code}
> 2015-04-23 21:09:13,032 INFO [main] app.DAGAppMaster: Comparing client 
> version with AM version, clientVersion=0.7.0.2.3.0.0-1716, 
> AMVersion=0.7.0.2.3.0.0-1716
> 2015-04-23 21:09:14,653 INFO [main] service.AbstractService: Service 
> org.apache.tez.dag.app.DAGAppMaster failed in state INITED; cause: 
> org.apache.tez.dag.api.TezUncheckedException: 
> org.apache.hadoop.security.AccessControlException: Permission denied: 
> user=hrt_qa, access=EXECUTE, inode="/tmp/yarn/staging":yarn:hdfs:drwx------
>         at 
> org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319)
>         at 
> org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:259)
>         at 
> org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:205)
>         at 
> org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190)
>         at 
> org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1698)
>         at 
> org.apache.hadoop.hdfs.server.namenode.FSDirStatAndListingOp.getFileInfo(FSDirStatAndListingOp.java:108)
>         at 
> org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3849)
>         at 
> org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:1005)
>         at 
> org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:843)
>         at 
> org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
>         at 
> org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)
>         at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:969)
>         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)
>         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045)
>         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:1657)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to