繁体   English   中英

多个elasticsearch python客户端向单个ES集群发送批量json数据

[英]Multiple elasticsearch python client sending bulk json data to single ES cluster

我计划在我的每个 ec2 服务器(大约 50-60 个 ec2 服务器)上使用 elasticsearch python 客户端将数据发送到我的单个 ES 集群。
每个python客户端每秒都会向ES集群发送批量json。 总计 - 每秒 50/60 批量索引
每个批量 json 最多可以有 ~500 个文档/~ 3-4 MB 批量 json。 假设我使用 20 个节点集群 m4.large 或更多。

我的问题是

  1. ES集群如何负载均衡来自不同服务器的请求?
  2. 来自不同服务器的请求如此频繁,这将如何影响我的系统?
  3. elasticsearch vs Curl 到端点,哪个更好?

根据我的经验,您应该使用您的特定设置对其进行测试。

这取决于:

  • 你的ES集群有多大
  • 你的数据库有多大
  • 你有多少副本
  • 你有多少索引节点
  • 任何节点/分片感知 ID
  • 你的文件有多大
  • 您的自定义标记化/索引有多复杂
  • 你在发送文件时有任何尖峰吗
  • 集群上正在运行多少其他查询
  • 刷新间隔有多大

1. 在测试运行期间查看来自您服务器的数据

卷曲本地主机:9200/_cat/thread_pool?v=true

node_name name                active queue rejected
prodnode  bulk                     0     0        0
prodnode  fetch_shard_started      0     0        0
prodnode  fetch_shard_store        0     0        0
prodnode  flush                    0     0        0
prodnode  force_merge              0     0        0
prodnode  generic                  0     0        0
prodnode  get                      0     0        0
prodnode  index                    0     0        0
prodnode  listener                 0     0        0
prodnode  management               1     0        0
prodnode  refresh                  0     0        0
prodnode  search                   0     0        0
prodnode  snapshot                 0     0        0
prodnode  warmer                   0     0        0

2.根据我的经验,您提到的数字应该可以按集群管理。 您可能面临的第一个问题:批量拒绝( 关于此的非常好的文章)。 你能容忍它并重新发送失败的文件吗? 通过设计批量查询更好地合并到单个队列并让一个代理将它们发送到集群。 如果集群跟不上,集群将锁定它或限制它。 最好进行实验。

3. 与索引时间和集群内通信相比,编码和网络延迟要小得多,因此您选择哪一个并不重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM