{eval=Array;=+count(Array);}
Kylin的背景
Kylin 是一个Hadoop生态圈下的MOLAP系统,是ebay大数据部门从2014年开始研发的支持TB到PB级别数据量的分布式Olap分析引擎。其特点包括:
可扩展的超快的OLAP引擎
提供ANSI-SQL接口
交互式查询能力
MOLAP Cube 的概念
与BI工具可无缝整合
Kylin典型的应用场景如下:
用户数据存在于Hadoop HDFS中,利用Hive将HDFS文件数据以关系数据方式存取,数据量巨大,在500G以上
每天有数G甚至数十G的数据增量导入
有10个左右为固定的分析维度
Kylin的核心思想是利用空间换时间,由于查询方面制定了多种灵活的策略,进一步提高空间的利用率,使得这样的平衡策略在应用中是值得采用的。
kylin的总体架构
Kylin 作为一个Olap引擎完成了从数据源抓取数据,ETL到自己的存储引擎,提供REST服务等一系列工作,其架构如图所示:
Kylin 大数据时代的OLAP利器
Kylin 的生态圈包括:
Kylin Core: Kylin 引擎的框架,查询、任务、以及存储引擎都集中于此,除此之外还包括一个REST 服务器来响应各种客户端请求。
扩展插件: 各种提供额外特性的插件,如安全认证、SSO等
完整性组件: Job管理器,ETL、监控以及报警
交互界面: 基于Kylin Core之上的用户交互界面
驱动: 提供了JDBC以及ODBC的连接方式
kylin Cube 多维数据的计算
Kylin的多维计算主要是体现在OLAP Cube的计算。Cube由多个Cuboid组合而成,Cuboid上的数据是原始数据聚合的数据,因此创建Cube可以看作是在原始数据导入时做的一个预计算预处理的过程。Kylin的强大之处在于充分利用了Hadoop的MapReduce并行处理的能力,高效处理导入的数据。
Kylin的数据来自于Hive,并作为一个Hive的加速器希望最终的查询SQL类似于直接在Hive上查询。因此Kylin在建立Cube的时候需要从Hive获取Hive表的元数据。虽然有建立Cube的过程,但是并不想对普通的查询用户暴露Cube的存在。
Kylin创建Cube的过程如下图所示:
Kylin 大数据时代的OLAP利器
根据Cube定义的事实表以及维度表,利用Hive创建一张宽表
抽取事实表上的维度的distinct值,将事实表上的维度以字典树方式压缩编码成目录,将维度表以字典树的方式编码
利用MapReduce从第一步得到的宽表文件作为输入,创建 N-Dimension cuboid,然后每次根据前一步的结果串行生成 N-1 cuboid, N-2 cuboid … 0-Cuboid
根据生成的Cuboid数据量计算HTable的Region分割策略,创建HTable,将HFile导入进来
Kylin与传统的OLAP一样,无法应对数据Update的情况(更新数据会导致Cube的失效,需要重建整个Cube)。面对每天甚至每两个小时这样固定周期的增量数据,Kylin使用了一种增量Cubing技术来进行快速响应。
Kylin的Cube可以根据时间段划分成多个Segment。在Cube第一次Build完成之后会有一个Segment,在每次增量Build后会产生一个新的Segment。增量Cubing依赖已有的Cube Segments和增量的原始数据。增量Cubing的步骤和新建 Cube的步骤类似,Segment之间以时间段进行区分。
增量Cubing所需要面对的原始数据量更小,因此增量Cubing的速度是非常快的。然而随着Cube Segments的数目增加,一定程度上会影响到查询的进行,所以在Segments数目到一定数量后可能需要进行Cube Segments的合并操作,实际上merge cube是合成了一个新的大的Cube Segment来替代,Merge操作是一个异步的在线操作,不会对前端的查询业务产生影响。。
0
回答0
回答0
回答0
回答3
回答0
回答0
回答0
回答0
回答0
回答