Kylin架构及核心组件

refer:https://blog.csdn.net/ZYC88888/article/details/80265242

Kylin的架构参考:

2160494-f7ce755087d88a66.jpg
image

Kylin的核心组件:

  • 数据立方体构建引擎(Cube Build Engine):当前底层数据计算引擎支持MapReduce1、MapReduce2、Spark等。
  • Rest Server:当前kylin采用的rest API、JDBC、ODBC接口提供web服务。
  • 查询引擎(Query Engine):Rest Server接收查询请求后,解析sql语句,生成执行计划,然后转发查询请求到Hbase中,最后将结构返回给 Rest Server。
2160494-430cea9e50e3391b.jpg
image

当前Apache kylin构建(build)数据立方体,采用逐层算法(By Layer Cubing)。未来的发布中将采用快速立方体算法(Fast Cubing)。下面简单介绍一下逐层算法:

一个完整的数据立方体,由N-dimension立方体,N-1 dimension立方体,N-2维立方体,0 dimension立方体这样的层关系组成,除了N-dimension立方体,基于原数据计算,其他层的立方体可基于其父层的立方体计算。所以该算法的核心是N次顺序的MapReduce计算。

在MapReduce模型中,key由维度的组合的构成,value由度量的组合构成,当一个Map读到一个key-value对时,它会计算所有的子立方体(child cuboid),在每个子立方体中,Map从key中移除一个维度,将新key和value输出到reducer中。直到当所有层计算完毕,才完成数据立方体的计算。过程如下图:

2160494-b7628c6ed242634b.jpg
image

在数据立方体计算完毕后,有一个任务(Convert Cuboid Data to HFile),其职责是将reduce输出的运算结果(Cuboid Data)转化成Hbase中的存储载体(HFile),最终将HFile 加载到Hbase表中便于查询。其中表的rowkey由维度组合而成,维度组合对应的度量值构成了column family,为了查询减少存储空间,会对RowKey和column family的值进行编码,默认编码是Snappy。
2160494-7733eaee58404807.jpg
image

猜你喜欢

转载自blog.csdn.net/weixin_33935777/article/details/87586155