集群资源评估
所有文档

          Elasticsearch BES

          集群资源评估

          使用百度智能云Elasticsearch前,需要优先结合业务需求和所存数据,评估集群所需的资源容量,包括磁盘容量、单机规格、shard大小和数量等。评估方式如下:

          节点数量评估

          建议至少选择3个节点,保证ES集群具有较高的节点故障容错能力和更好的可用性。

          磁盘评估

          磁盘类型选择

          SSD云磁盘:适合对性能要求高的场景,具有高IO和高吞吐,适合数据响应度较高的在线分析和搜索场景。核心业务系统、大型线上查询业务建议选择SSD云磁盘。

          高性能云磁盘:性能比SSD云磁盘低,价格相对低廉。适合线下测试、大规模冷数据存储分析等对性能要求不敏感的场景。

          磁盘容量评估

          用户考虑磁盘空间时主要考虑以下几方面:

          • 影响ES磁盘空间大小的因素包括:

            • 副本分片数量:副本可以增加数据的可靠性和查询并发量,建议副本分片数量至少设置为1( number_of_replicas=1)。
            • 索引数据膨胀开销:除原始数据外,ES 需要存储索引、列存数据等,通常比源数据大10%-50%(_all参数等未计算)。
            • 百度智能云Elasticsearch内部开销:用于 segment 合并、ES Translog、日志等内部操作,预留20%。
            • 安全阈值:通常至少预留30%的安全阈值。

          因此,数据保存在 ES 中实际数据量大概为:

            实际数据量 = 源数据 * (1 + 副本数量) * (1 + 数据膨胀) / (1 - 内部任务开销)
                    ≈ 源数据 * (1 + 副本数量) * 1.4

          计算副本数量和安全阈值预留空间后,建议申请的存储容量为:

            存储容量 = 源数据 * (1 + 副本数量) * 1.4 * (1 + 预留空间)
                    ≈ 源数据 * 3.6
          • 索引数据膨胀具体开销可以使用“mapper-size”插件测试,使用方式:创建索引mapping时设置“_size:{"enable":true}”。
          • _all参数默认禁用,如果业务上没有特殊需求,建议无需开启。
          • 开启_all参数,磁盘容量的开销也会增大,在评估磁盘空间时需要相应增加。

          单机规格评估

          单机规格的大小会影响百度智能云Elasticsearch集群性能。建议参考以下几点来评估集群单机规格。

          • 如果需要使用NLP中文分词或向量检索插件,建议单节点内存在8G以上。
          • 使用场景不同,单节点磁盘最大容量也会不同。Elasticsearch实例能够容载的数据量与JVM的堆内存大小有关,一般JVM的堆内存会使用50%左右用于处理数据,建议单节点磁盘最大容量按照JVM内存来评估,建议比例如下:
          场景 说明 单节点磁盘最大容量
          搜索场景 大量查询聚合、数据计算的业务场景 JVM的堆内存(G)* 0.5 * 50
          日志场景 大量日志写入、离线分析的业务场景 JVM的堆内存(G)* 0.5 * 100

          除了小内存机型外,通常情况下BES将JVM的堆内存设置为节点内存的一半,最大不超过30G。集群规格参考示例如下:

          规格名称 CPU(核) 内存(GB) 单节点磁盘最大容量
          bes.g3.c2m8 2 8 搜索场景:100 GB
          日志场景:200 GB
          bes.g3.c4m16 4 16 搜索场景:200 GB
          日志场景:500 GB
          bes.g3.c8m32 8 32 搜索场景:500 GB
          日志场景:1 TB
          bes.g3.c16m64 16 64 搜索场景:1 TB
          日志场景:2 TB

          shard 相关评估

          在进⾏shard规划前,用户需要考虑:

          • 存量数据和增量数据的量级
          • 数据的写入TPS和查询QPS
          • 集群规模和单节点规格

          基于以上问题,对shard规划提供了一些建议。

          • 主分片数目在创建索引后不可动态更改,所以在创建索引之前,建议进行合理进行shard分配。
          • 通常业务场景下建议单个shard大小保持在10-30GB,日志场景可以保持在20-50GB。分片不宜过大或过小:过大可能使 ES 的故障恢复速度变慢、查询性能降低;过小可能导致非常多的分片,分片越多,ES性能开销也越大,从而导致读写性能差、内存不足等问题。
          • 建议单节点上的shard数⽬建议控制在500个以下,7.x版本的实例默认的单节点shard的上限为1000个(官⽅不建议调整),如果需要单节点shard数量较大,建议调整shard规划或扩容节点来调整单节点的shard数量。。
          • 当数据量和写入量较大时,降低 ES 压力,建议选择多主分片单副本分片;当数据量较小,且写入量也比较小时,建议使用单主分片多副本分片或者单主分片单副本分片。
          • 建议单个节点上同一索引的shard个数不要超5个。
          • 建议shard的个数(包括副本)要尽可能等于数据节点数,或者是数据节点数的整数倍,保证分片可以在各个节点均匀分布。
          上一篇
          访问Elasticsearch服务
          下一篇
          用户手册