Java StormCrawler和Hortonworks 1.1.0.2.6.4.0-91之间的Commons日志记录版本冲突

Java StormCrawler和Hortonworks 1.1.0.2.6.4.0-91之间的Commons日志记录版本冲突,java,web-crawler,apache-storm,stormcrawler,Java,Web Crawler,Apache Storm,Stormcrawler,我按照指南为拓扑生成jar文件。当我在readme文件中使用storm命令运行拓扑时,我在执行FetcherBolt时遇到以下错误。我在Hortonworks集群中安装了storm 1.1.0.2.6.4.0-91。无论是本地模式还是分布式模式,我都会得到相同的异常。 我有以下例外 java.lang.NoSuchMethodError:org.apache.commons.logging.impl.LogFactoryImpl.handleThrowable(Ljava/lang/Throwa

我按照指南为拓扑生成jar文件。当我在
readme
文件中使用storm命令运行拓扑时,我在执行FetcherBolt时遇到以下错误。我在Hortonworks集群中安装了storm 1.1.0.2.6.4.0-91。无论是本地模式还是分布式模式,我都会得到相同的异常。 我有以下例外

java.lang.NoSuchMethodError:org.apache.commons.logging.impl.LogFactoryImpl.handleThrowable(Ljava/lang/Throwable;)V位于org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:568)org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:292)在org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:269)在org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)在org.apache.http.conn.ssl.AbstractVerifier.(AbstractVerifier.java:61)在org.apache.http.conn.ssl.allowlHostNameVerifier.(AllowlHostNameVerifier.java:44)在org.apache.http.conn.ssl.AllowAllHostnameVerifier.(AllowAllHostnameVerifier.java:46)在org.apache.http.conn.ssl.SSLConnectionSocketFactory.(SSLConnectionSocketFactory.java:146)在org.apache.http.impl.conn.poolighttpclientConnectionmanager.getDefaultRegistry(poolighttpclientConnectionmanager.java:115)位于org.apache.http.impl.conn.PoolighttpClientConnectionManager.(PoolighttpClientConnectionManager.java:122)com.digitalpebble.stormcrawler.protocol.httpclient.httprotocol.(HttpProtocol.java:76)java.lang.Class.forName0(本机方法)java.lang.Class.forName(Class.java:264)com.digitalpebble.stormcrawler.ProtocolFactory。(ProtocolFactory.java:60)org.apache.storm.daemon.executor$fn_u9635$fn_u9648.invoke(executor.clj:794)org.apache.storm.util$async_loop$fn_u557.invoke(util.clj:482)clojure.lang.AFn.run(AFn.java:22)java.lang.Thread.run(Thread.java:748)


这可能是因为从httpclient库继承的commons日志版本与ApacheStorm的Hortonworks版本放在类路径上的版本之间存在冲突

[INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.6:compile
[INFO] |  +- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  \- commons-codec:commons-codec:jar:1.9:compile
您可以通过设置

  http.protocol.implementation: "com.digitalpebble.stormcrawler.protocol.okhttp.HttpProtocol"
  https.protocol.implementation: "com.digitalpebble.stormcrawler.protocol.okhttp.HttpProtocol"

在crawler-conf.yaml文件中。请注意,这并不能保证对commons日志的调用不会在其他地方发生。理想情况下,您希望通过确保Hortonworks使用与StormCrawler所需版本相同的版本来解决依赖性问题。我们只支持Storm的Apache发行版。

在ya中创建条目ml解决了这个问题。我们的爬虫程序将部署在现有的基础设施上,因此我们需要看看是否可以升级hortonworks中的storm,