ES 查询异常
Exception with ES query
我正在使用带有 ELasticsearch-7.2.0 的 stormcrawler 1.16。 java 版本是 1.8.0_252 。 storm版本是1.2.3,maven版本是3.6.3。
我已经使用 mvn 原型创建了项目 -
mvn archetype:generate -DarchetypeGroupId=com.digitalpebble.stormcrawler -
DarchetypeArtifactId=storm-crawler-elasticsearch-archetype -DarchetypeVersion=LATEST
我制作了一个 seeds.txt 文件并放置了 9 个 url 仅用于测试,并使用 REAEDME.md 文件中给出的命令在 --remote 模式下提交了拓扑。
它 运行 成功并按预期抓取页面。
但是当我将 8000 个 URL 放入 seeds.txt 文件时出现问题。
i 运行 ES_IndexInit.sh 再次提交文件并使用与我之前相同的命令提交拓扑。
然后我得到这个错误 -
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
2020-06-12 11:26:11.416 c.d.s.e.p.AggregationSpout pool-12-thread-1 [ERROR] [spout #1] Exception with ES query
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.8.0_252]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:714) ~[?:1.8.0_252]
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:174) [stormjar.jar:?]
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:148) [stormjar.jar:?]
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:351) [stormjar.jar:?]
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221) [stormjar.jar:?]
at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.run(CloseableHttpAsyncClientBase.java:64) [stormjar.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
然后我在 worker.log 文件中查找错误。我在那里发现了同样的错误。
然后我检查我的碎片的健康状况 -
{
"cluster_name" : "my-cluster1",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 2,
"active_shards" : 2,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0,
"indices" : {
".kibana_task_manager" : {
"status" : "green",
"number_of_shards" : 1,
"number_of_replicas" : 0,
"active_primary_shards" : 1,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"shards" : {
"0" : {
"status" : "green",
"primary_active" : true,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
}
},
".kibana_1" : {
"status" : "green",
"number_of_shards" : 1,
"number_of_replicas" : 0,
"active_primary_shards" : 1,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"shards" : {
"0" : {
"status" : "green",
"primary_active" : true,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
}
}
}
}
碎片的生命值是绿色的。
现在,如果我在不同的或新的项目中提交爬虫拓扑,拓扑仍然是理想的,不会发出或传输任何元组。
我使用的是相互兼容的版本吗?我应该为 elasticsearch 使用 java 11 还是它工作正常?
关于实例的详细信息 -
我正在使用 EC2 中等实例 ubuntu 18.04 和 4 GB 内存。
谁能解释一下这是什么问题?
除非您想删除状态索引中的 URL,否则您不需要再次 运行 ESIinitScript。如果您 运行 它不止一次,则状态中将没有任何内容,这可能是拓扑空闲的原因。
没有理由在种子文件中包含更多 URL 会导致问题,我们通常有超过 100 万个 URL 的种子文件,这不是问题。
我正在使用带有 ELasticsearch-7.2.0 的 stormcrawler 1.16。 java 版本是 1.8.0_252 。 storm版本是1.2.3,maven版本是3.6.3。
我已经使用 mvn 原型创建了项目 -
mvn archetype:generate -DarchetypeGroupId=com.digitalpebble.stormcrawler -
DarchetypeArtifactId=storm-crawler-elasticsearch-archetype -DarchetypeVersion=LATEST
我制作了一个 seeds.txt 文件并放置了 9 个 url 仅用于测试,并使用 REAEDME.md 文件中给出的命令在 --remote 模式下提交了拓扑。
它 运行 成功并按预期抓取页面。
但是当我将 8000 个 URL 放入 seeds.txt 文件时出现问题。
i 运行 ES_IndexInit.sh 再次提交文件并使用与我之前相同的命令提交拓扑。 然后我得到这个错误 -
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
2020-06-12 11:26:11.416 c.d.s.e.p.AggregationSpout pool-12-thread-1 [ERROR] [spout #1] Exception with ES query
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.8.0_252]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:714) ~[?:1.8.0_252]
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:174) [stormjar.jar:?]
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:148) [stormjar.jar:?]
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:351) [stormjar.jar:?]
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221) [stormjar.jar:?]
at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.run(CloseableHttpAsyncClientBase.java:64) [stormjar.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
然后我在 worker.log 文件中查找错误。我在那里发现了同样的错误。 然后我检查我的碎片的健康状况 -
{
"cluster_name" : "my-cluster1",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 2,
"active_shards" : 2,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0,
"indices" : {
".kibana_task_manager" : {
"status" : "green",
"number_of_shards" : 1,
"number_of_replicas" : 0,
"active_primary_shards" : 1,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"shards" : {
"0" : {
"status" : "green",
"primary_active" : true,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
}
},
".kibana_1" : {
"status" : "green",
"number_of_shards" : 1,
"number_of_replicas" : 0,
"active_primary_shards" : 1,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"shards" : {
"0" : {
"status" : "green",
"primary_active" : true,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
}
}
}
}
碎片的生命值是绿色的。 现在,如果我在不同的或新的项目中提交爬虫拓扑,拓扑仍然是理想的,不会发出或传输任何元组。
我使用的是相互兼容的版本吗?我应该为 elasticsearch 使用 java 11 还是它工作正常?
关于实例的详细信息 - 我正在使用 EC2 中等实例 ubuntu 18.04 和 4 GB 内存。
谁能解释一下这是什么问题?
除非您想删除状态索引中的 URL,否则您不需要再次 运行 ESIinitScript。如果您 运行 它不止一次,则状态中将没有任何内容,这可能是拓扑空闲的原因。
没有理由在种子文件中包含更多 URL 会导致问题,我们通常有超过 100 万个 URL 的种子文件,这不是问题。