设置参数 `node.name` 可以自定义 Elasticsearch 节点的名字。 此条 Tips 由 medcl 贡献。

关于集群规划的一些疑问

Elasticsearch | 作者 heli | 发布于2020年08月27日 | 阅读数:1398

以下是在官网看到的: 每G堆内存对应的分片数量不超过20个,每个分片大小在20-40G
根据这个 https://elasticsearch.cn/question/7600 帖子里面的需求:
如果我最大需要存储10TB数据量,并且需要从业务角度,提前拆分多个索引。
考虑到每个分片大小控制在30GB以内,我应该如何规划集群规模?
比如,多少节点?多少索引?多少分片? 多少副本?
我计算的过程是:
10T数据,一个副本,总数量是:20T
集群的总分片数量: 20*1024/30约等于683分片
每1G堆内存对应20个分片,则需要:34.15堆内存
一般机器上分配一半的内存给es,则大约需要一台64机器就足够了
请问我这算哪里有问题吗?
这个帖子里面大佬的回复是:
推荐5-10台数据节点,请问是怎么算出来的?
 
 
 
 
 
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

AiToMaKoTo - Elasticsearch.永远滴神

赞同来自:

   emmmm...其实不能够就这么算.因为es的主要功能是做检索的,如果按你这个算法就只是把es当做了存储工具
   就拿我线上的生成环境来说吧: 一台64G的服务器,单节点,5T数据,没副本,分片在200个左右,有的索引大,有的索引小,平均下来单个分片有25G左右,但就是这样,内存也已经到了75%以上了,而这个内存占比不算是一个健康值.因为es的段文件都是存储在内存,所以热数据越多,则内存占用越高,还要加上如bulk,search等线程占用的内存.
    再说你给出的这个计算,如果你是准备一台64G内存(磁盘,cpu这些就不讲了)的服务器,单节点,索引不加副本(单节点加了也没用),要想集群稳定运行,除非你是把10T数据全部导入进集群后,关闭掉6T数据,剩余4T热数据,这样这个勉强可以达到es的基础功能
    如果你是要加副本,那势必得做成双节点,那64G内存就完全不够,除非压缩单个节点的内存,那样的话就达不到es的最大效率
    所以es的集群规划并不是一个纯粹的算术题,这是要根据你的业务,你的服务器性能,你的数据结构,还有索引规划这一系列综合来的,要不es不仅有数据节点,还有热数据节点,冷数据节点,协调节点等,这些都是为了业务场景来进行选择的
    链接中那位大佬给出的规划算是一个比较正常的,因为es的主要功能是检索,不只是存储,而且现在的新版本es还提供了很多函数计算,sql结合等,这些都是比较吃服务器资源的

要回复问题请先登录注册