我不断得到一个异常,因为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时,应用程序甚至不能加载一个类。
在类路径中,我可以看到两个版本的httpcore。
httpcore-4.4.1.jar
httpcore-4.2.4.jar
当应用程序在独立模式下运行时,我不会得到那个异常。
例外情况:
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
感谢您的帮助。
2条答案
按热度按时间xkftehaa1#
我们在hortonworks发行版2.3.2中遇到了这样一个令人讨厌的问题(真丢脸):
oozie“launcher”的工作总是
httpcore
以及httpclient
在类路径中作为hadoop客户机的一部分oozie“launcher”的工作总是
httpcore
以及httpclient
捆绑在“oozie”共享库中配置单元/hive2共享库包含
httpcore
以及httpclient
在最新版本中从hadoop的Angular 来看,
user.classpath.first
适用于两个sharelib,因此有50/50的机会获得每个jar的正确订单(因此总体上有25/75的机会)底线:我们必须
去除
httpcore
以及httpclient
来自“oozie”sharelib hdfs dir(duh!)提高
oozie.launcher.mapreduce.job.user.classpath.first
所有依赖配置单元jar的操作的标志(即配置单元操作、配置单元2操作、以某种方式调用jdbc驱动程序的shell操作等)post scriptum——oozie服务器在内存中保存每个sharelib中的jar列表,因此在服务器运行时删除jar将触发新作业中的错误。如果您不想停止oozie服务器,那么更新live sharelib的“正确方法”是:(a)在一个新的、带有时间戳的目录中创建一个新版本[检查文档…],(b)告诉服务器在更新的Lib上重新同步
oozie admin -sharelibupdate
kq4fsx7k2#
您想用本地版本的
httpcore
但是您不希望它出现在类路径中,因为hadoop将提供自己的版本。那你应该用provided
适用范围httpcore
jar:来自maven文档
provided
:这很像compile,但表示您希望jdk或容器在运行时提供依赖关系。