1

私の目標は、マップ フェーズで Solr インデックスをクエリし、結果を S3 に書き込むエラスティック マップ削減ジョブを実行することです。Solr と Hadoop は、Hadoop ジョブ内で Solr インデックスを構築する (つまり、Solr インデックスへの書き込み) 際にうまく連携しました。Solr インデックスを照会するジョブを実行すると、Solr クライアントを開始しようとするとエラーが発生します。Hadoop と Solr の間に依存関係の問題があると思われます。両方とも異なるバージョンの http クライアントを使用していて、エラーはメソッドが見つからないという問題だったことを思い出します。ここにスタックトレースがあります

2013-07-24 03:17:47,082 FATAL org.apache.hadoop.mapred.Child (main): Error running child : java.lang.NoSuchMethodError: org.apache.http.impl.conn.SchemeRegistryFactory.createSystemDefault()Lorg/apache/http/conn/scheme/SchemeRegistry;
at org.apache.http.impl.client.SystemDefaultHttpClient.createClientConnectionManager(SystemDefaultHttpClient.java:118)
at org.apache.http.impl.client.AbstractHttpClient.getConnectionManager(AbstractHttpClient.java:445)
at org.apache.solr.client.solrj.impl.HttpClientUtil.setMaxConnections(HttpClientUtil.java:179)
at org.apache.solr.client.solrj.impl.HttpClientConfigurer.configure(HttpClientConfigurer.java:33)
at org.apache.solr.client.solrj.impl.HttpClientUtil.configureClient(HttpClientUtil.java:115)
at org.apache.solr.client.solrj.impl.HttpClientUtil.createClient(HttpClientUtil.java:105)
at org.apache.solr.client.solrj.impl.HttpSolrServer.<init>(HttpSolrServer.java:154)
at org.apache.solr.client.solrj.impl.HttpSolrServer.<init>(HttpSolrServer.java:127)
4

1 に答える 1

0

このオプションを追加するとうまくいきました

--args -s,mapreduce.user.classpath.first=true

ユーザー定義のクラスパスを使用すると、hadoop と solr jar の間の依存関係の問題が解決されました

于 2013-07-24T23:34:14.013 に答える