Oozie Workflow使用不正确的用户目录

时间:2015-08-06 21:01:48

标签: hadoop workflow sqoop oozie

我试图执行一个由同事编写的oozie工作流程。我执行这个命令:

oozie job -config ./job.properties -run

我在job.properties中设置了参数,包括我的user.name,当我检查日志时,我可以看到工作流中使用的那些值 - 在我的hdfs目录中创建文件(例如{{1} })。但是在工作流程中的某个时刻,它会因权限错误而失败,因为它会尝试修改同事目录中的某些内容。它的行为好像exportDir=/user/${user.name}/ra_export被缓存在某处,并且正在使用旧值。有没有人见过这样的行为,如果有的话,解决方案是什么?

更新

这是日志的失败部分:

${user.name}

但我可以从同一个日志的顶部看到job.properties变量替换正在成功发生:

  1215755 [main] INFO  org.apache.hadoop.hive.ql.exec.FileSinkOperator  - Moving tmp dir: hdfs://hadoop-name-01.mycompany.com:8020/tmp/hive-staging_hive_2015-08-06_19-51-57_511_3052536268795125086-1/_tmp.-ext-10000 to: hdfs://hadoop-name-01.mycompany.com:8020/tmp/hive-staging_hive_2015-08-06_19-51-57_511_3052536268795125086-1/-ext-10000
  1215761 [main] INFO  org.apache.hadoop.hive.ql.log.PerfLogger  - <PERFLOG method=task.MOVE.Stage-0 from=org.apache.hadoop.hive.ql.Driver>
  1215762 [main] INFO  org.apache.hadoop.hive.ql.exec.Task  - Loading data to table client_reporting.campaign_web_events_export from hdfs://hadoop-name-01.mycompany.com:8020/tmp/hive-staging_hive_2015-08-06_19-51-57_511_3052536268795125086-1/-ext-10000
  1215821 [main] ERROR org.apache.hadoop.hive.ql.exec.Task  - Failed with exception Permission denied: user=clark.bremer, access=WRITE, inode="/user/john.smith/ra_export":john.smith:john.smith:drwxr-xr-x

但正如您在日志的失败部分中所看到的那样,它使用了错误的用户名( Starting the execution of prepare actions Deletion of path hdfs://hadoop-name-01.mycompany.com:8020/user/clark.bremer/foo_export succeeded. Creating directory at /user/clark.bremer/foo_export succeeded. Completed the execution of prepare actions successfully 而不是john.smith),以及错误的导出目录({{1而不是clark.bremer)。 John上次运行此工作流时使用了ra_export

这是我的job.properties文件的一部分:

foo_export

以下是创建表格的查询中的一些片段:

ra_export

user.name=clark.bremer jobTracker=hadoop-name-01.mycompany.com:8032 nameNode=hdfs://hadoop-name-01.mycompany.com:8020 exportDir=/user/${user.name}/foo_export 位于我的用户目录中。

1 个答案:

答案 0 :(得分:1)

您尝试访问的Hive表,是否已检查,哪个用户已创建Hive表。

你可以放弃现有的Hive Table并与你的用户一起创建一个新表,并运行相同的工作并检查状态