阿里云Elasticsearch离线平台化建设

  1. 云栖社区>
  2. Elasticsearch技术团队>
  3. 博客>
  4. 正文

阿里云Elasticsearch离线平台化建设

小扑 2018-11-23 19:02:44 浏览2081
展开阅读全文

阿里云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",后面会做详细介绍

在离线平台系统架构中,离线管控是不可或缺的重要部分,下面我们来看看离线管控是如何串联起复杂的离线流程。

离线管控流程

elastichub管控图

从上图中可以很清晰的看到离线管控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开销

详细过程如下图所示
blink_failove

总结与展望

阿里云Elasticsearch离线平台致力于解决搜索场景下海量数据批次/实时计算和索引构建问题, 基于实时计算引擎Blink提供高可用、高性能的数据处理能力。



阿里云Elasticsearch技术钉钉交流群
0ad8278ceab790e06a9edfb2453ac405e67e8f8a

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

阿里云Elasticsearch 1核2G首月免费试用,开始云上实践吧

网友评论

登录后评论
0/500
评论
小扑
+ 关注
所属团队号: Elasticsearch技术团队