配置文件字段不符情况:
一开始,创建索引报错时,查看日志会发现,提示:“undefined field”这种情况是提交的SolrDocument里有的字段名在配置文件managed-schema中没有事先定义,所以会报这种错;
但是最近,在MapReduce运行时,出现如下错误:(ip地址用了“x”替代)
18/05/30 10:58:28 INFO mapreduce.Job: Task Id : attempt_1525877339245_0044_m_000001_0, Status : FAILED Error: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at [图片]http://xx.xx.xx.xx:xxxx/solr/SEARCH_LHLEMR_v8: Connection reset at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:577) at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:241) at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:230) at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:149) at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:106) at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:71) at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:85) at SolrIndexMapReduce.EmrIndexLHLSolrIndexMR$SolrIndexMapper.cleanup(EmrIndexLHLSolrIndexMR.java:234) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:148) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) 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:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
request: [图片]http://xx.xx.xx.xx:xxxx/solr/SEARCH_LHLEMR_v8_shard2_replica1/update?update.distrib=TOLEADER&distrib.from=http%3A%2F%2Fxx.xx.xx.xx%3A8081%2Fsolr%2FSEARCH_LHLEMR_v8_shard1_replica1%2F&wt=javabin&version=2 at org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient$Runner.sendUpdateStream(ConcurrentUpdateSolrClient.java:290) at org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient$Runner.run(ConcurrentUpdateSolrClient.java:161) at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:229) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748)通过一点点的排查发现是因为有一个字段用来判断使用,没有把他过滤掉,也把他添加到了SolrDocument中,导致上面的错误。这次与之前的不同没有提示“undefined field”,如果提示“undefined field”会很容易的发现是字段问题。