【问题标题】:OutOfMemoryError for bin/nutch elasticindex <$cluser> -all (Nutch 2.1)bin/nutch elasticindex <$cluser> -all (Nutch 2.1) 的 OutOfMemoryError
【发布时间】:2014-03-30 19:38:04
【问题描述】:

我一直按照http://wiki.apache.org/nutch/Nutch2Tutorial 的说明进行操作,以查看是否可以使用 ElasticSearch 运行 nutch 安装。我已经成功完成了一次没有真正问题的爬网,但是当我尝试将结果加载到 elasticsearch 中时,我遇到了麻烦。

我发出命令:

bin/nutch elasticindex <$cluser> -all

它会等待很长时间,然后返回错误: 线程“主”java.lang.RuntimeException 中的异常:作业失败:name=elastic-index [ocpnutch],jobid=job_local_0001

如果我查看日志:

~/apache-nutch-2.1/runtime/local/logs/hadoop.log

我看到几个这样的错误:

netty 层捕获异常 [[id: 0x569764bd, /192.168.17.39:52554 => /192.168.17.60:9300]] java.lang.OutOfMemoryError: Java 堆空间

弹性搜索的日志中没有任何内容。

我尝试过改变: elastic.max.bulk.docs 和 elastic.max.bulk.size 到小尺寸并将大量 GB 分配给 nutch,但无济于事。

jvm 是: Java(TM) SE 运行时环境(build 1.7.0_21-b11)

有人知道我做错了什么吗?还有哪些其他诊断信息有助于解决这个问题?

【问题讨论】:

  • 如果那是你的 nutch 日志,内存不足就在 nutch 上。在尝试与 elasticsearch 运行实例通信时,elasticsearch 客户端会抛出该错误。你真的确定你给了 nutch 足够的记忆?
  • 这是一个很好的问题——我是否一直在集中精力。我已经编辑了 bin/nutch 文件中显示“JAVA_HEAP_MAX=-Xmx2G”的行,尝试了从 1G 到 12G 的所有内容,我可以看到使用内存的过程 - 但老实说,我不确定应该需要多少,但是堆栈跟踪似乎没有那么有用。
  • 我还应该补充一点,它适用于 solr:bin/nutch solrindex 127.0.0.1:8983/solr -reindex
  • 那么可能是elasticsearch版本的问题。使用 tha java API,您可以使用用于在节点之间进行通信的二进制协议。可能是nutch集成的版本和你集群上的不匹配?

标签: elasticsearch nutch


【解决方案1】:

我也有同样的问题。我使用弹性搜索 0.90.2。 我找到了一个解决方案:使用 elasticsearch 0.19.4 它可以工作!

【讨论】:

    【解决方案2】:

    我遇到了由不兼容的 HBase 版本和弹性搜索引起的类似问题。使用 Hbase 版本 0.90.4 和 Elastic Search 版本 0.90.9 对我有用。

    我在配置中做了一些更改。在 ~/apache-nutch-2.2.1/ivy/ivy.xml 中,elasticsearch 的依赖版本必须设置为 0.90.9

    在文件 ElasticWriter.java 的第 104 行中声明:

    if (item.failed())
    

    必须改为:

    if (item.isFailed())
    

    然后它对我有用。

    【讨论】:

      猜你喜欢
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多