我的目标是运行一个弹性map reduce作业,在map阶段查询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)
1条答案
按热度按时间m1m5dgzv1#
加上这个选项就成功了
--args-s,mapreduce.user.classpath.first=true
使用用户定义的类路径解决了hadoop和solrjar之间的依赖性问题