【问题标题】:elastic search on qbox is not accesible through nutch无法通过 nutch 访问 q box 上的 elasticsearch
【发布时间】:2016-06-30 19:26:16
【问题描述】:

我有一个用于弹性搜索的 qbox 实例(有关 qbox elasticsearch 的更多详细信息,请参见http://qbox.io/),并带有自定义 tcp 端口。 当我尝试通过 nutch 访问实例进行索引时,出现以下错误:

java.lang.Exception:org.elasticsearch.client.transport.NoNodeAvailableException:配置的节点都不可用:[]
    在 org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:354)
引起:org.elasticsearch.client.transport.NoNodeAvailableException:配置的节点都不可用:[]
    在 org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:278)
    在 org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:197)
    在 org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106)
    在 org.elasticsearch.client.support.AbstractClient.bulk(AbstractClient.java:163)
    在 org.elasticsearch.client.transport.TransportClient.bulk(TransportClient.java:364)
    在 org.2016-06-30 15:39:14,320 警告 mapred.FileOutputCommitter - 清理中的输出路径为空
2016-06-30 15:39:14,320 警告 mapred.LocalJobRunner - job_local561208907_0001
java.lang.Exception:org.elasticsearch.client.transport.NoNodeAvailableException:配置的节点都不可用:[]
    在 org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:354)
引起:org.elasticsearch.client.transport.NoNodeAvailableException:配置的节点都不可用:[]
    在 org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:278)
    在 org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:197)
    在 org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106)
    在 org.elasticsearch.client.support.AbstractClient.bulk(AbstractClient.java:163)
    在 org.elasticsearch.client.transport.TransportClient.bulk(TransportClient.java:364)
    在 org.elasticsearch.action.bulk.BulkRequestBuilder.doExecute(BulkRequestBuilder.java:164)
    在 org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:91)
    在 org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:65)
    在 org.apache.nutch.indexwriter.elastic.ElasticIndexWriter.commit(ElasticIndexWriter.java:208)
    在 org.apache.nutch.indexwriter.elastic.ElasticIndexWriter.close(ElasticIndexWriter.java:226)
    在 org.apache.nutch.indexer.IndexWriters.close(IndexWriters.java:114)
    在 org.apache.nutch.indexer.IndexerOutputFormat$1.close(IndexerOutputFormat.java:54)
    在 org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.close(MapTask.java:650)
    在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:767)
    在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:364)
    在 org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:223)
    在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    在 java.util.concurrent.FutureTaselasticsearch.action.bulk.BulkRequestBuilder.doExecute(BulkRequestBuilder.java:164)
    在 org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:91)
    在 org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:65)
    在 org.apache.nutch.indexwriter.elastic.ElasticIndexWriter.commit(ElasticIndexWriter.java:208)
    在 org.apache.nutch.indexwriter.elastic.ElasticIndexWriter.close(ElasticIndexWriter.java:226)
    在 org.apache.nutch.indexer.IndexWriters.close(IndexWriters.java:114)
    在 org.apache.nutch.indexer.IndexerOutputFormat$1.close(IndexerOutputFormat.java:54)
    在 org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.close(MapTask.java:650)
    在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:767)
    在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:364)
    在 org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:223)
    在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    在 java.util.concurrent.FutureTask.run(FutureTask.java:262)
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    在 java.lang.Thread.run(Thread.java:745)
k.run(FutureTask.java:262)
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    在 java.lang.Thread.run(Thread.java:745)

【问题讨论】:

    标签: elasticsearch nutch


    【解决方案1】:

    当集群主机/端口或集群名称在客户端和服务器上不匹配时,您通常会收到此错误。

    在您的$NUTCH_ROOT/runtime/local/conf/nutch-site.xml 中,请确保您已正确配置与 qbox.io 上的集群名称匹配的主机、端口和集群名称 -

    <property>
      <name>elastic.host</name>
      <value></value>
      <description>The hostname to send documents to using TransportClient. Either host
      and port must be defined or cluster.</description>
    </property>
    
    <property> 
      <name>elastic.port</name>
      <value>9300</value>
      <description>The port to connect to using TransportClient.</description>
    </property>
    
    <property> 
      <name>elastic.cluster</name>
      <value></value>
      <description>The cluster name to discover. Either host and port must be defined
      or cluster.</description>
    </property>
    

    【讨论】:

    • 感谢@pranav 的回复 :) 。我想我发现了这个问题:之前我使用 nutch 2.3 版和 elasticsearch 2.3.3 版,现在我改为 1.7.1 并且效果很好。
    • 您更改了哪个版本?弹力版还是螺母版?
    • 必须是 elasticsearch 版本。2.3.3 和 1.7.1 都是(相对)1.x 和 2.x 发布流中的最新 elasticsearch 版本
    • @Sachin 我将 elasticsearch 版本 2.3.3 更改为 1.7.1
    • 嘿,我找到了解决方案。你不需要降级ES。相反,您从源代码(主分支)github.com/apache/nutch/blob/master 构建,您可以在构建之前自定义 ES 插件的版本。干杯:)
    猜你喜欢
    • 2017-08-21
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 2021-05-07
    • 2020-08-14
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    相关资源
    最近更新 更多