1

我的目标是运行一个弹性映射减少作业,在映射阶段查询 Solr 索引并将结果写入 S3。在 Hadoop 作业中构建 Solr 索引(即写入 Solr 索引)时,Solr 和 Hadoop 可以很好地协同工作。当我运行作业以查询 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 回答