Apache Kylin | Apache Kylin中的实时流设计(基于Kylin3.0)

Why Build Real-time Streaming in KylinThe real-time streaming feature is contributed by eBay big data......

构建Real-time Streaming目的

  • 毫秒数据准备延迟
  • 支持Lambda架构
  • 减少MR任务和HBase tables

架构

Apache Kylin | Apache Kylin中的实时流设计(基于Kylin3.0)_第1张图片

蓝色框中就是Kylin3.0新添加的Streaming组件,负责从Streaming接收数据,并提供实时数据查询。

将无边界的流数据分为3个阶段,在不同阶段的数据都可以被立即查询。

Apache Kylin | Apache Kylin中的实时流设计(基于Kylin3.0)_第2张图片

 

组件

Apache Kylin | Apache Kylin中的实时流设计(基于Kylin3.0)_第3张图片

1)Streaming Receiver

        负责接收实时流数据,并提供实时数据查询。

2)Streaming Coordinator

        负责协调工作,当出现新的Streaming cube,需要分配相应的Streaming Recevers处理。

3)Metadata Store

        存储Streaming相关的元数据,包括cube分配信息、cube构建的状态信息等。

4)Query Engine

        扩展于现有的查询引擎,支持从Streaming Recever查询实时数据。

5)Build Engine

        扩展于现有的构建引擎,支持从实时数据流中构建完整的cube。

 

Streaming cube如何工作?

Apache Kylin | Apache Kylin中的实时流设计(基于Kylin3.0)_第4张图片

 

  1. Coordinator向所有分区的实时流数据源请求cube构建
  2. Coordinator协调分配哪些Streaming Recevers消费实时流数据,并发送请求相应的Recevers开始消费数据
  3. Streaming Recevers开始消费数据,并index实时流事件
  4. 一段时间后,Recever将处理好的数据segments从本地复制到远程的HDFS文件中
  5. Streaming Recever通知Coordinator某个segments已持久化到HDFS中
  6. Coordinator提交一个cube构建job到Build Engine,当所有Recever都已提交segments时触发构建完整的cube
  7. Build Engine从HDFS文件中生成所有的cuboids
  8. Build Engine将所有的cuboids存储到HBase,然后Coordinator请求Streaming Recevers删除相关的本地实时数据

Streaming Query Engine如何工作?

Apache Kylin | Apache Kylin中的实时流设计(基于Kylin3.0)_第5张图片

 

  1. 如果需要查询实时数据cube,Query Engine从Coordinator获悉哪些Streaming Receivers被分配cube查询
  2. Query Engine向Streaming Receivers发送查询请求,以查询realtime segments
  3. Query Engine向HBas发送查询请求,以查询历史数据
  4. Query Engine聚合查询结果,并将最终结果返回可客户端

 

翻译于:Apache Kylin | Real-time Streaming Design in Apache Kylin

你可能感兴趣的:(Kylin)