aliyun-codec插件是阿里云Elasticsearch团队自主开发的索引压缩插件。使用该插件,您可以对Elasticsearch底层多种索引文件进行压缩,同时该插件支持source_reuse_doc_values特性,大幅度降低整体索引的大小。本文介绍如何使用aliyun-codec插件。
背景信息
aliyun-codec插件的性能测试信息如下:
- 测试环境
- 数据集:使用阿里云Elasticsearch线上主日志。
- 数据大小:单个index,索引大小为1.2 TB,22个shard。
- 索引配置:开启行存(source)、列存(docvalue)和倒排(postings)压缩,都使用zstd压缩算法。
- 测试结果
- 使用aliyun-codec插件,开启索引压缩后,与未使用该插件的集群相比:
- 写入速率:不变。
- 索引整体大小:降低了40%。
- 查询延迟:降低了50%。
- 使用aliyun-codec插件,开启索引压缩和source_reuse_doc_values特性后会降低存储成本。与未使用该插件的集群相比:
- 写入速率:不变。
- 索引整体大小:最多可降低40%。降低百分比与索引中开启source_reuse_doc_values特性的字段的比例相关。
- 查询延迟:与索引中开启source_reuse_doc_values特性的字段的比例、节点磁盘类型等因素有关,具体以实际测试为准。
- 使用aliyun-codec插件,开启索引压缩后,与未使用该插件的集群相比:
前提条件
- 创建阿里云Elasticsearch实例,版本为7.10.0。
具体操作,请参见创建阿里云Elasticsearch实例。
- 根据业务场景,升级实例的内核版本:
- 如果您仅需要对索引文件进行压缩:将内核版本升级至1.5.0及以上版本。
- 如果您不仅需要对索引文件进行压缩,还需要使用source_reuse_doc_values特性:将内核版本升级至1.6.0及以上。
升级内核版本的具体操作请参见升级版本。
- 安装aliyun-codec插件(7.10版本实例默认已安装)。
您可在插件配置页面查看是否已安装aliyun-codec插件。如果还未安装,请手动进行安装,安装方法请参见安装或卸载系统默认插件。
使用限制
- 仅实例版本为7.10.0,且内核版本为1.5.0及以上的阿里云Elasticsearch实例,支持aliyun-codec插件的索引压缩功能。6.7.0版本实例请使用codec-compression插件,详细信息请参见使用索引压缩插件beta版本(codec-compression)。
- 仅实例版本为7.10.0,且内核版本为1.6.0及以上的阿里云Elasticsearch实例支持source_reuse_doc_values特性,且日志场景化模板(aliyun_default_index_template )默认开启压缩,即
"index.codec" : true
。
使用索引压缩功能
使用source_reuse_doc_values特性
开启source_reuse_doc_values特性
执行以下命令,在创建索引时开启source_reuse_doc_values特性。
PUT test
{
"settings": {
"index": {
"ali_codec_service": {
"source_reuse_doc_values": {
"enabled": true
}
}
}
}
}
注意 source_reuse_doc_values特性只能在创建索引时开启,且一旦开启无法关闭。
调整source_reuse_doc_values特性配置
开启source_reuse_doc_values特性后,您还可以根据业务,调整source_reuse_doc_values特性的相关配置:
- 调整开启source_reuse_doc_values字段的最大个数。
当开启source_reuse_doc_values特性的字段个数超过您设置的值,Elasticsearch将抛出异常或自动关闭source_reuse_doc_values特性,默认为50。调整方式如下。
PUT _cluster/settings { "persistent": { "apack.ali_codec_service.source_reuse_doc_values.max_fields": 100 } }
- 设置是否强制不能超过您设置的开启source_reuse_doc_values特性的最大字段个数。
- true:超过您设置的值,Elasticsearch会抛出异常。
- false:超过您设置的值,Elasticsearch会自动关闭source_reuse_doc_values特性。
PUT _cluster/settings { "persistent": { "apack.ali_codec_service.source_reuse_doc_values.strict_max_fields": true } }
- 调整查询时读取开启了source_reuse_doc_values字段值的并发度。
在获取原文时,source_reuse_doc_values特性会并发读取文档中开启了source_reuse_doc_values字段的值并进行组装。为了降低耗时,您可以调整系统获取各字段值的并发度。默认并发度为5,您可以通过如下方式调整。
PUT test/_settings { "index": { "ali_codec_service": { "source_reuse_doc_values": { "fetch_slice": 2 } } } }
- 调整读取开启了source_reuse_doc_values字段值的线程池和队列大小。
线程池默认大小为节点的核数,队列默认大小为1000。该配置仅能通过修改YML文件调整,修改YML文件的具体操作请参见配置YML参数。您可以在YML文件中添加如下配置进行调整。
apack.doc_values_fetch: size: 8 queue_size: 1000