hadoop - Oozie 作业返回错误 HIVETEZHS2USERACCESS
问题描述
我最近在 HDInsight 3.6(之前的 3.5)上改造了 HDP 集群(2.6.2)。从那一刻起,我在旧环境中定义的 oozie Jobs 停止工作。有趣的是,它们适用于 shell 动作,但不适用于 hive 动作。我是从 Oozie 运行它们还是直接从 HDFS 运行它们没有区别。
以下工作流程步骤失败:
<action name="hive_action">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapreduce.job.queuename</name>
<value>${queueName}</value>
</property>
</configuration>
<script>${CODE_DIR}/hive/sql.hql</script>
<param>WPS_DB=wh</param>
</hive>
我确定参数传递正确。我得到的错误如下:
2018-07-04 14:34:49,721 WARN HiveActionExecutor:523 - SERVER[correct_server_name] USER[correct_user] GROUP[-] TOKEN[] APP[categorization] JOB[correct_job_name] ACTION[correct_action@wh] Launcher exception: HIVETEZHS2USERACCESS
java.lang.NoSuchFieldError: HIVETEZHS2USERACCESS at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.setupSessionAcls(TezSessionState.java:233)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.open(TezSessionState.java:188)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.open(TezSessionState.java:116)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:557)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
at org.apache.oozie.action.hadoop.HiveMain.runHive(HiveMain.java:336)
at org.apache.oozie.action.hadoop.HiveMain.run(HiveMain.java:313)
at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:58)
at org.apache.oozie.action.hadoop.HiveMain.main(HiveMain.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:242)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:170)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164)
据我所知,工作所需的字段似乎没有在 hive、tez 或 hive2 的任何配置文件中定义。但是在同一类型中,没有像 hive.tez.hs2.user.access 这样的属性来配置 hive、tez 或 hive2 配置 xml。我尝试在 sql.hql 脚本中添加以下行:
set hive.execution.engine=tez;
set hive.tez.hs2.user.access=true;
以及 hive-site.xml cond 文件的属性。
<property>
<name>hive.tez.hs2.user.access</name>
<value>true</value>
</property>
当然没有效果。我找到的关于该字段的唯一页面是: https ://hive.apache.org/javadocs/r2.2.0/api/org/apache/hadoop/hive/conf/HiveConf.ConfVars.html#HIVETEZHS2USERACCESS
但我真的不知道如何在配置/hql 文件中使用这个变量。感谢任何帮助。
解决方案
推荐阅读
- javascript - node js express,req.body什么都不返回
- sql - 动态日期 SQL Server
- r - 'ggplot' 中的 UTC 时间错误的 Unix 时间戳
- image-processing - 将PNG转换为JP2质量损失
- bash - 在 shell 脚本中访问 Jenkins-home-directory 路径
- go - 新旧变量的变量声明和赋值语法
- html - 有什么办法可以全屏打开'jsfiddle'中的代码运行?
- javafx-11 - JavaFX 鼠标事件未在嵌套较小画布控件的部分区域中触发
- jsp - JSTL forEach 无法打印列表值
- django - 如何使用 Django 调整网站的引导卡大小?