阿里云Elasticsearch提供低成本、灵活的分析和搜索服务,很大程度降低了用户的使用成本和运维成本。美中不足的是缺乏数据场景的支持,用户还是需要花很大的精力去解决数据场景的痛点问题,比如
- 海量数据源如何对接
- 复杂的数据计算和处理逻辑
- 全量数据导入影响在线查询
- 海量数据导入越来越慢
- 全量/实时数据无损切换
为了帮助用户解决这些痛点问题,阿里云Elasticsearch离线平台应运而生 。
Elasticsearch离线平台化的演进
值得一提的是,在调研完用户痛点后, 我们启动了ElasticBuild。它是基于Blink的离线索引构建,对标Ha3的BuildService系统,我们仍在不断地优化性能,最终实现真正的在离线分离。
与此同时,我们还和搜索离线组件平台团队展开了深度合作,共同打造离线产品化。
Elasticsearch离线平台系统架构
上图描述了离线平台系统架构,其中部分组件的简介如下:
- Elastichub:搜索场景下的离线计算产品ElasticHub
- Dolphin:云上通用管控, 集成了组件库Searchflow(借鉴Beam),可对接各种服务,包括Bahamut,Maat,Elasticsearch等,串联在线和离线
- Bahamut:执行引擎,是搜索离线组件平台的核心,负责离线任务的创建、调度、管理等各种功能
- Blink:实时计算引擎Flink的阿里内部版本,在大规模分布式、SQL、TableAPI、Batch上做了大量的优化和重构。离线平台的所有计算任务都是Blink job,包括stream和batch
- ElasticBuild:Elasticsearch的"BuildService",后面会做详细介绍
在离线平台系统架构中,离线管控是不可或缺的重要部分,下面我们来看看离线管控是如何串联起复杂的离线流程。
离线管控流程
从上图中可以很清晰的看到离线管控Dolphin和Bahamut是如何配合串联起离线全量/增量切换流程的,而画虚线的ElasticBuild又在其中扮演一个的角色呢 ?
ElasticBuild简介
ElasticBuild是Elasticsearch的"BuildService"。
ElasticBuild主要解决离线全量的性能问题,做到在离线分离。 它是基于实时计算引擎Blink的离线索引构建,我们针对Elasticsearch内核进行了深入优化,使得全量性能相比于在线得到了极大的提升。
下面我们来看看在数据写入场景所做的一些优化 。
Elasticsearch数据场景深入优化解密
优化思路
- 硬件方向
- HDFS Directory - Elasticsearch支持读写HDFS, Block Cache优化使其拥有良好的读写性能, 高可用和稳定性得到保障
- 软件方向
- 系统架构
- 规模弹性:当Shard数固定后,离线集群缺乏了弹性扩缩容能力
- 优化:将Shard数据进一步拆分, 达到并发构建, 随时扩缩集群规模的能力,速度随资源可扩展
- Elasticsearch内核级别
- Translog:Failover需要通过Translog回追数据, 增加了大量IO消耗
- 优化:利用Blink checkpoints机制替代Translog
- 索引合并 :索引合并重复的IO消耗巨大
- 优化: 通过内存索引合并可以减少合并索引过程的重复IO读写
- 系统架构
下面会针对两个比较重要的优化做详细介绍
NRT Cache实现内存索引合并
众所周知, 索引合并是elasticsearch数据写入过程中的的重大开销。Segment写入磁盘后,又会被反复读到内存中合并,接着又写入磁盘。这个过程会有大量重复IO开销。
因此,我们将这个索引合并过程放在内存中
如图,多个segemnt会在内存中达到一定大小后,才会Flush到磁盘,从而避免了大量重复IO开销。
Blink Checkpoints取代Translog
为了避免Translog带来的IO开销,我们移除了Translog。
Blink Checkpoints机制简单来说就是 每隔一段时间会对数据做一次快照,快照里包含state信息以及数据消费位点, 并保存快照至HDFS,当出现Failover的时候,将还原快照,快照之后的数据会被重新消费,来保证数据的完整性。
我们基于Blink Checkpoints的Failover机制具备以下优点
- 秒级Failover恢复
- Exactly Once保证数据准确
- 去除Translog后降低了近一倍的IO开销
总结与展望
阿里云Elasticsearch离线平台致力于解决搜索场景下海量数据批次/实时计算和索引构建问题, 基于实时计算引擎Blink提供高可用、高性能的数据处理能力。

2017年9月,阿里云基于开源Elasticsearch及商业版X-Pack插件,提供云上ELK服务,同时阿里云ES技术人员会分享解决云上业务痛点的案例实践,敬请期待!了解产品更多详情 https://data.aliyun.com/product/elasticsearch
阿里云Elasticsearch 1核2G首月免费试用,开始云上实践吧