【发布时间】: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