0
votes

We have a Hadoop cluster that is running HDP 2.2.0.0.

We have another Hadoop cluster that is running HDP 2.2.4.2.

We have an Oozie workflow with Hive action that runs fine on the first cluster with HDP 2.2.0.0.

But the same exact workflow fails in the second cluster running HDP 2.2.4.2, with this error:

38098 [main] INFO  org.apache.hadoop.hive.ql.Driver  - Starting task [Stage-4:MOVE] in serial mode
2015-07-15 16:23:22,810 INFO  [main] ql.Driver (Driver.java:launchTask(1604)) - Starting task [Stage-4:MOVE] in serial mode
38099 [main] INFO  org.apache.hadoop.hive.ql.exec.Task  - Moving data to: hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10000 from hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10002
2015-07-15 16:23:22,811 INFO  [main] exec.Task (SessionState.java:printInfo(824)) - Moving data to: hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10000 from hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10002
40129 [main] ERROR hive.ql.metadata.Hive  - Unable to move using hadoop distcp,  source hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10002 to destination hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10000 using command: /usr/bin/hadoop distcp  hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10002 hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10000
2015-07-15 16:23:24,841 ERROR [main] metadata.Hive (Hive.java:renameFile(2444)) - Unable to move using hadoop distcp,  source hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10002 to destination hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10000 using command: /usr/bin/hadoop distcp  hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10002 hdfs://master-1.local:8020/tmp/hive/cloudfeeds/00f8edac-8b5a-4dfa-9115-5a915acabee0/hive_2015-07-15_16-22-49_023_841777402951025944-1/-ext-10000
40129 [main] ERROR hive.ql.metadata.Hive  - Exit value for hadoop distcp command 255

And further down in the log, we have this error:

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=yarn, access=EXECUTE, inode="/tmp/hive/cloudfeeds":cloudfeeds:hdfs:drwx------

I checked the permission of the directory above: /tmp/hive/cloudfeeds. Both clusters have the same permission 700 and owner cloudfeeds.

I checked the map reduce job logs and both clusters have these:

user.name=yarn
mapreduce.job.user.name=cloudfeeds

I don't want to just turn off dfs.permissions. I also don't want to give permission 777 to directory /tmp/hive/cloudfeeds, which I am sure will cause the job to run successfully.

Any ideas how I should debug this and more importantly how to solve the issue?

1
Did you try setting the permissions of /tmp/hive/cloudfeeds to 770 and adding the yarn user to be in the hdfs group?cjackson

1 Answers

3
votes

I solved the permission issue by adding this to the hive-site.xml:

  <property>
    <name>hive.scratch.dir.permission</name>
    <value>777</value>
    <description>The permission for the user specific scratch directories that get created.</description>
  </property>