gpt4 book ai didi

java - Oozie 不断将旧版本的 httpcore jar 添加到类路径

转载 作者:可可西里 更新时间:2023-11-01 14:19:33 25 4
gpt4 key购买 nike

我不断收到异常,因为 Oozie 将错误版本的 httpcore jar 添加到类路径。我尝试了不同的选择,例如

oozie.launcher.mapreduce.task.classpath.user.precedence
oozie.launcher.mapreduce.user.classpath.first

oozie.launcher.mapreduce.task.classpath.user.precedence 根本没有响应,当我使用 oozie.launcher.mapreduce.user.classpath.first 时,应用程序甚至无法加载一个类。

在类路径中我可以看到两个版本的 http-core。

httpcore-4.4.1.jar
httpcore-4.2.4.jar

当应用程序以独立模式运行时,我没有收到该异常。

异常(exception):

    Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.JavaMain], main() threw exception, java.lang.NoSuchFieldError: INSTANCE
org.apache.oozie.action.hadoop.JavaMainException: java.lang.NoSuchFieldError: INSTANCE
at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:59)
at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:47)
at org.apache.oozie.action.hadoop.JavaMain.main(JavaMain.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:236)
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:164)
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.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
at microsoft.exchange.webservices.data.core.ExchangeServiceBase.createConnectionSocketFactoryRegistry(ExchangeServiceBase.java:244)
at microsoft.exchange.webservices.data.core.ExchangeServiceBase.initializeHttpClient(ExchangeServiceBase.java:198)
at microsoft.exchange.webservices.data.core.ExchangeServiceBase.<init>(ExchangeServiceBase.java:174)
at microsoft.exchange.webservices.data.core.ExchangeServiceBase.<init>(ExchangeServiceBase.java:179)
at microsoft.exchange.webservices.data.core.ExchangeService.<init>(ExchangeService.java:3729)
at com.sonasoft.sonacloud.email.dispatcher.conn.EwsConnection.getConnection(EwsConnection.java:16)
at com.sonasoft.sonacloud.email.dispatcher.conn.EwsConnection.getConnection(EwsConnection.java:10)
at com.sonasoft.sonacloud.email.dispatcher.utils.EwsOperations.<init>(EwsOperations.java:47)
at com.sonasoft.sonacloud.email.dispatcher.utils.EwsOperations.getInstance(EwsOperations.java:53)
at com.sonasoft.sonacloud.email.dispatcher.main.MainClass.main(MainClass.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:56)
... 15 more

Oozie 客户端构建版本:4.2.0.2.3.2.0-2950

感谢任何帮助。

最佳答案

我们在 HortonWorks 发行版 2.3.2 中遇到了这个讨厌的问题(对他们感到羞耻):

  • Oozie“启动器”作业总是在 httpcorehttpclient 中获取CLASSPATH 作为 Hadoop 客户端的一部分
  • Oozie“启动器”作业总是获取 httpcorehttpclient捆绑在“Oozie”ShareLib 中
  • Hive/Hive2 Sharelibs 包含 httpcorehttpclient 在一个更新版本
  • 从 Hadoop 的角度来看,user.classpath.first 适用于两者ShareLibs 所以它有 50/50 的机会为每个人获得正确的顺序JAR(所以总体上有 25/75 的机会)

底线:我们必须

  1. 从“Oozie”ShareLib HDFS 中删除httpcorehttpclient目录(呃!)
  2. 为依赖于 Hive JARS 的所有操作提升 oozie.launcher.mapreduce.job.user.classpath.first 标志 (即 Hive 操作、Hive2 操作、以某种方式调用 JDBC 驱动程序的 Shell 操作等)

Post-scriptum -- Oozie 服务器在内存中保存每个 ShareLib 中的 JAR 列表,因此在服务器运行时删除 JAR 将触发新作业中的错误。如果您不想停止 Oozie 服务器,那么更新实时 ShareLib 的“正确方法”是(a)在一个新的、带有时间戳的目录中创建一个新版本 [检查文档...](b) 告诉服务器使用 oozie admin -sharelibupdate

在较新的库上重新同步

关于java - Oozie 不断将旧版本的 httpcore jar 添加到类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34869346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com