Elasticsearch数据规划

南墨2年前技术文章604

1.1 为什么数据规划很重要

任何系统都有一套更为适用的规则或者其系统规格,前期的详细设计能为我们后期维护优化节约大量的精力。在我们实际的经验中,发现大部分问题(分片严重超规格,单个分片超大,索引mapping设置不合理等问题)都是由于数据的前期规划不够,大大增加了后期整改和优化的难度和成本。

在进行数据规划之前,首先要对数据有充分的了解,包括不限于:

l   数据量有多大,包括总量,增量,以及未来的趋势?

l   数据的生命之旅是怎么样的,即从写入到删除的过程?

l   我们期望从数据里面挖掘出什么,即数据是用来做什么的?

1.2 合理的规格

常见的系统规格如下所示:

Elasticsearch集群实例数

建议控制在300EsNode实例范围内

Elasticsearch集群支持的最大shard

建议控制在5万以内

EsNode实例,最大shard

建议控制在500以内

shard支持存储的数据量

建议单个shard大小20-30GB

EsNode实例,最大存储量

建议单个EsNode存储数据5TB以内

index分片总数

建议控制在EsNode实例个数的2倍以内

index字段个数

建议控制在1024个字段范围内

单批次查询返回的数据量

建议控制在10000以内

 

1.3 分片如何规划

每个分片都可以处理索引和查询请求,在设定分片数目时,可从以下几个方面考虑:

l   建议单个分片保存的数据量在20GB左右,最大不超过30GB,过大的分片会降低查询以及索引恢复的性能。

l   根据索引预计承载的最大数据容量和单个分片容量确定主分片个数。

l   为了提升数据可靠性,合理设置副本分片个数,至少设置为1,如果集群的存储空间足够,推荐设置为2

l   每个node可以支撑的shards个数是有限的,node是物理资源分配的对象,随着shards中数据的增大,shards中的数据在查询时被不断加载到内存,达到一定量时,将会把HeapSize耗尽,导致频繁GC,系统将不能正常工作。推荐1GB内存管理15shard,以一个Elasticsearch实例内存最大31G为例,单实例管理的shard数保持在500以内。

l   配置total_shards_per_node参数,让分片更加均匀的分布在各个实例上。表示限制每个实例上分布该该索引的分片最大个数,如2,即表示每个实例上最多分布2个该索引的分片。

l   说明:total_shards_per_node参数值=索引总分片数/数据实例数(向上取整)。


相关文章

mysql高可用配置(一)

一、简介MySQL使用双向半同步复制模式,通过开源的keepalived实现自动切换,应用通过vip连接数据库。配合自定义脚本,实现故障安全切换,切换过程对应用透明。二、部署主从2.1、在主备节点部署...

企业级大数据安全架构(八)

企业级大数据安全架构(八)

前面第七章详细介绍了部署FreeIPA来做kerberos认证,这节接着介绍FreeIPA高可用部署1.FreeIPA高可用配置说明:在安装完一台ipa-server之后,在另一个备份节点部署ipa-...

Kafak顺序写入与数据读取详解

Kafak顺序写入与数据读取详解

生产者(producer)是负责向Kafka提交数据的,Kafka会把收到的消息都写入到硬盘中,它绝对不会丢失数据。为了优化写入速度Kafak采用了两个技术,顺序写入和MMFile。1. 顺序写入因为...

Hbase rowkey设计原则

HBase 中的 rowkey 设计需要遵循以下原则:1 rowkey 唯一原则若在 HBase 中向同一张表插入相同 rowkey 的记录,如没有设置版本数量,则此 rowkey 原先的数据会被覆盖...

impala:大数据交互查询

impala:大数据交互查询

一、简介        Cloudera公司推出,提供对HDFS、HBase数据的高性能、低延迟的交互式SQL查询功能。基于Hive,使用与Apache Hive相同的元数据,使用内存计算,兼顾数据仓...

LINUX 安全运维-用户密码

密码策略linux作为一个多用户的系统,我们还是不可避免的会去新增很多用户,我们不能保证每一个用户具有很好的安全意识,所以只能在用户的密码以及用户的远程访问上做一些限制,我们先介绍Linux用户密码策...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。