3月23号,Elastic又发布了最新的7.12版本。在这个版本中,最重要的一个更新是frozen tier的发布。相比于之前版本的cold tier(关于cold tier的细节,可以查看之前的博文: Elastic Searchable snapshot功能初探、 Elastic Searchable snapshot功能初探 二 (hot phase)),其最大的不同是我们可以直接在对象存储里面进行数据的搜索,即我们能够保持对象存储里面的快照数据一直 在线可查,通过构建一个小规模的,只带基础存储的计算集群,就可以查阅保存在快照中的海量数据!做到真正的计算和存储分离,并且极大的降低查阅庞大的历史冷冻数据的所需的成本和提高查询效能。(可参考官方博客: 使用新的冻结层直接搜索S3)
前方高能图片:
单节点"挂载"1PB数据,本地磁盘使用率1.7%,只需很少的计算资源和本地存储资源就可以查询海量数据。
要做到这点,有几个前提:
- 需要有Elastic的Enterprise级别的订阅
- 已经有可用的对象存储用于快照仓库
演示思路
在本博文中,我们来给大家简单展示一下,如何通过Searchable snapshot + Frozen Tier来做到直接在快照中进行数据搜索,这里的个中要点是——通过构建一个小规模的,只带基础存储的计算集群,就可以查阅保存在快照中的海量数据!因此,我们需要至少准备两个集群,一个数据集群用于生成快照,我们可以将其抽象为我们生产环境中会大量产生日志的其他集群,对于那些已经转冷,甚至是要归档的数据,我们都放在snapshot里面。而另一个是我们的让归档级数据保持在线可查的计算集群,通过mount
的方式,将snapshot挂载为本地可查,但又不占据存储空间的searchable snapshot index。
- 以上的
default-deployment
就是我们提到的“数据集群” - 而
frozen tier
就是我们提到的“计算集群”
为了使用到frozen tier的功能,我们需要对计算集群(frozen tier
集群)做特定的配置 —— xpack.searchable.snapshot.shared_cache.size: 8GB
:
注意,该版本上已经可以使用
autoscaling
功能
准备数据
我们以esrally的标准数据作为本次测试数据集,选择的是noaa数据,包含33,659,481个文档,原始大小为9.0GB
____ ____
/ __ \____ _/ / /_ __
/ /_/ / __ `/ / / / / /
/ _, _/ /_/ / / / /_/ /
/_/ |_|\__,_/_/_/\__, /
/____/
Available tracks:
Name Description Documents Compressed Size Uncompressed Size Default Challenge All Challenges
------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------------- ------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
noaa Global daily weather measurements from NOAA 33,659,481 949.4 MB 9.0 GB append-no-conflicts append-no-conflicts,append-no-conflicts-index-only,top_metrics,aggs
http_logs HTTP server log data 247,249,096 1.2 GB 31.1 GB append-no-conflicts append-no-conflicts,runtime-fields,append-no-conflicts-index-only,append-sorted-no-conflicts,append-index-only-with-ingest-pipeline,update,append-no-conflicts-index-reindex-only
metricbeat Metricbeat data 1,079,600