ES压缩算法测试

Lucene 当前针对 Document Fields 数据的存储,支持两种压缩算法:

  • LZ4
  • best_compression(Deflate)

LZ4 具有更快的压缩与解压速度,而 Deflate 在压缩率上更占优势。两者在性能与压缩率上存在明显的差异,基于现有的压缩算法,用户不能很好的兼容压缩比和性能,Lucene 默认的压缩算法是 LZ4。

LZ4与Deflate算法压缩率对比(来源腾讯云/阿里云)

压缩算法

加载时间(1 Shard)

加载时间(5 Shards)

Fields(*fdt)文件大小

索引总大小

写入TPS(doc/s)

LZ4 1143769ms 420447ms 4.15 GB 6.3 GB 202682
Deflate 1270408ms 448738ms 2.56 GB 4.7 GB 181686

Deflate对比LZ4写入性能下降10%,压缩率提升20%


实际测试


公司对手数据分别写入5.6.16和7.10.1两个es版本

 >>ES5.6.16 LZ4算法

 ES压缩算法测试_第1张图片

>>ES 5.6.16 best_compression(Deflate)


ES压缩算法测试_第2张图片

  >>ES7.10.1  LZ4算法
ES压缩算法测试_第3张图片
 

>>ES 7.10.1 best_compression(Deflate)

ES压缩算法测试_第4张图片

>>效果对比

es版本

压缩算法

docs

size

5.6.16 LZ4 284,012 33.9 M
5.6.16 Deflate 284,012 30.7 M
7.10.1 LZ4 284,012 14M
7.10.1 Deflate 284,012 11.4M


结论:es7 较es5压缩率有很大提升,相同压缩算法压缩率提升近60%。Deflate相较于LZ4算法压缩率提升20%,使用best_compression(Deflate)算法可以节省更多资源。

2、美国数据、印第安数据、商业数据分别写入es5.6、7.13.3

     测试服务器:非独用,里面部署了一堆数据库

     服务器配置信息:Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz*2 64G SAS600G*4 RAID1+RAID1

5.6

7.17(lz4)

7.17(best)

lz4压缩率(比较5.6)

best压缩率(比较5.6)

customs_imports_america-2008 6.32 5.85 5.42 92.5% 85.7%
customs_imports_india-2016 7.99 6.98 5.97 87.3% 74.7%
tendata_globiz_corp 23.6 22.8 17.5 96.6% 74.1%

结论:best压缩率明显高于lz4算法

其他产商压缩算法:

1、阿里云自研codec-compression插件,支持brotli和zstd压缩算法,适用于写入量大、索引存储成本高的场景,例如日志场景、时序分析场景等,可以大大降低索引的存储成本。性能测试信息如下:

测试环境

    机器配置:数据节点16核64 GB*3 + 2 TB SSD云盘。

    数据集:官方esrally自带的nyc_taxis(74 GB)。

    索引配置:都使用默认配置,写入完成后都可以进行force merge。

测试结果

压缩算法

索引大小(GB)

写入TPS(doc/s)

压缩算法

索引大小(GB)

写入TPS(doc/s)

ES默认压缩算法(LZ4) 35.5 202682
best_compression(DEFLATE) 26.4 181686
brotli 24.4 182593
zstd 24.6 181393

结论

    codec-compression插件使用的brotli和zstd压缩算法,与默认压缩算法(LZ4)相比,写入性能下降了10%,压缩率提升了45%;与原生best_compression(DEFLATE)相比,写入性能不变,压缩率提升了8%。

2、腾讯云整合业内先进的压缩算法 Zstandard(ZSTD),提升压缩率的同时,性能损耗小

     Zstandard 压缩算法可以说兼顾了 LZ4 与 Deflate 两者的优点:在性能上与 LZ4 相当(针对日志数据的测试中,发现 Zstandard 算法比 LZ4 略优),而压缩率略弱于 Deflate。

     如下是关于三种压缩算法的对比测试结果:

压缩算法

加载时间(1 Shard)

加载时间(5 Shards)

Fields(*fdt)文件大小

索引总大小

LZ4 1143769ms 420447ms 4.15 GB 6.3 GB
Deflate 1270408ms 448738ms 2.56 GB 4.7 GB
Zstandard(16K Chunk) 1109414ms 415256ms 2.93 GB 5.1 GB
Zstandard(32K Chunk) 1088959ms 406661ms 2.67 GB 4.8 GB

  1. 测试数据:基于某典型日志应用类数据。
  2. 测试方法:基于 Elasticsearch Rest High Level Client API。

你可能感兴趣的:(大数据)