【发布时间】:2018-06-13 21:14:35
【问题描述】:
我一直在尝试设置一个 elasticsearch 集群来处理来自一些 3D 打印机的一些日志数据。 我们每天为 20 台机器生成超过 850K 的文档。他们每个人都有自己的索引。
现在我们有 16 个月的数据,在每个 elasticsearch 索引中索引了大约 410M 记录。 我们正在使用 spark 处理来自 CSV 文件的数据,并写入一个包含 3 台机器的 elasticsearch 集群,每台机器都有 16GB 的 RAM 和 16 个 CPU 内核。 但是每次我们达到大约 10-14M 文档/索引时,我们都会遇到网络错误。
Job aborted due to stage failure: Task 173 in stage 9.0 failed 4 times, most recent failure: Lost task 173.3 in stage 9.0 (TID 17160, wn21-xxxxxxx.ax.internal.cloudapp.net, executor 3): org.elasticsearch.hadoop.rest.EsHadoopNoNodesLeftException: Connection error (check network and/or proxy settings)- all nodes failed; tried [[X.X.X.X:9200]]
我确定这不是网络错误,只是 elasticsearch 无法处理更多索引请求。
为了解决这个问题,我尝试调整许多 elasticsearch 参数,例如:refresh_interval 以加快索引速度并消除错误,但没有任何效果。在监控集群之后,我们认为我们应该扩大规模。
我们还尝试调整 elasticsearch spark 连接器,但没有结果。
所以我正在寻找一种选择集群大小的正确方法?是否有关于如何选择集群大小的指南?任何亮点都会有所帮助。
注意:我们主要对索引数据感兴趣,因为我们只有一两个查询可以在数据上运行以获取一些指标。
【问题讨论】:
标签: apache-spark elasticsearch elasticsearch-5