Apache Kylin 云原生架构 思考及规划Kylin云原生架构思考及规划...Apache Kylin...
Transcript of Apache Kylin 云原生架构 思考及规划Kylin云原生架构思考及规划...Apache Kylin...
Effective Cloud User Group www.ecug.org
Apache Kylin 云原生架构
思考及规划
演讲人史少锋
Kyligence首席架构师Apache Kylin PMC & Committer
Effective Cloud User Group www.ecug.org
关于 Apache Kylin
Extreme OLAP Engine for Big Data
Apache Kylin™是一个开源的分布式分析引擎,为 Hadoop等大型分布式数据平台之上的超大规模数据集通过标准 SQL查询及多维分析(OLAP)功能,提供亚秒级的交互式分析能力。
官方网站: https://kylin.apache.org
Effective Cloud User Group www.ecug.org
发展历史
2014年10月开源并加入
Apache孵化器项目
2013年9月项目启动
2015年11月毕业成为 Apache顶级项目
2015年9月InfoWorld
最佳开源大数据工具奖
2016年9月二次获得 InfoWorld最佳开源大数据工具奖
2017年4月发布 Kylin-2.0,支持雪花模型和 Spark
2019年12月发布 Kylin 3.0,支持
实时分析
Effective Cloud User Group www.ecug.org
Apache Kylin 基础架构
Data analytics
Hive / Kafka / RDBMS
Apache Kylin
MR/Spark HBase / Parquet
Interactive Reporting Dashboard
OLAP / Data mart
Hadoop
- Build OLAP cube on Hadoop
- Support TB to PB level data
- Sub-second query latency
- ANSI-SQL
- JDBC / ODBC / REST API
- BI integration
- Web GUI
- LDAP/SSO
Effective Cloud User Group www.ecug.org
OLAP 与 OLAP Cube
联机分析处理(英语:Online analytical processing),简称OLAP,是计算机技术中快速解决多维分析问题(MDA)的一种方法。–维基百科
Cube 是 OLAP 的核心数据结构,基本操作:
• 上卷 Roll-up
• 下钻 Drill-down
• 切片 Slice and dice
• 旋转 Pivot
Effective Cloud User Group www.ecug.org
理论基础:空间换时间
• Cuboid:一种维度组合
• Cube:所有的维度组合
• 每个 Cuboid可以从上层 Cuboid 聚合计算而来
Kylin 会选择满足条件的 小的 Cuboid 回答查询
Effective Cloud User Group www.ecug.org
无 Cube的 SQL执行
selectl_returnflag,o_orderstatus,sum(l_quantity) as sum_qty,sum(l_extendedprice) as sum_base_price
fromv_lineitem
inner join v_orders on l_orderkey = o_orderkey
wherel_shipdate <= '1998-09-16'
group byl_returnflag,o_orderstatus
order byl_returnflag,o_orderstatus;
时间复杂度O(N)
无预计算,全部现场计算
Sort
Agg
Filter
Table
Join
Table
Effective Cloud User Group www.ecug.org
使用 Cube的 SQL 执行
Sort
Cube
Filter
预聚合数据
有预计算,基于 Cube 出结果,I/O少,计算少,延迟低
Sort
Agg
Filter
Table
Join
Table
时间复杂度O(1)
Effective Cloud User Group www.ecug.org
性能对比
0
2
4
6
8
10
12
1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3 3.4 4.1 4.2 4.3
Latency(s)
SSB Queries
�条SQL响���
Kylin SQL on Hadoop
0
10
20
30
40
50
60
70
80
90
0 10 20 30 40 50
Latency(s)
Data Scale
不同数据量性能�化
Kylin SQL on Hadoop
PB级数据上的亚秒级查询能力
Effective Cloud User Group www.ecug.org
Kylin 基于 Hadoop /HBase 架构的局限
Hadoop 运维困难
• 计算与存储紧耦合,扩容/缩容难
• 组件多,架构复杂,学习成本高
• 问题排查难,故障恢复慢
• 整体拥有成本高
HBase 不适合 OLAP 场景
• 为写多读少场景而设计,适合小量的写和读,不适合大范围读
• 索引简单,不适合复杂检索
• 非真正列存,I/O 消耗大
• MPP 架构,难以下压复杂计算,存在单点
• 故障恢复、升级等困难
Effective Cloud User Group www.ecug.org
云计算正在吞噬整个世界,包括 Hadoop
用对象存储代替 HDFS 本地磁盘存储
• 近乎无限的容量
• 更高的可靠性和持久性
• 按实际使用量付费
云上大数据处理的基础:存储与计算分离
• 更加灵活地 scale,无需担心数据的持久
用容器代替 YARN 管理资源
• 更好的应用隔离
• 更高的资源利用率
• 全方位的运营监控
Effective Cloud User Group www.ecug.org
第一步:重构 –核心组件可插拔 [已完成]
Cube Builder (MapReduce…)
SQL
Low Latency -SecondsRouting
3rd Party App(Web App, Mobile…)
Metadata
SQL-Based Tool(BI Tools: Tableau…)
Query Engine
HadoopHive
Kafka
REST API JDBC/ODBC
Source Data Key Value Data
Data Cube
OLAPCubes(HBase)
SQL
REST Server
Dat
a So
urce
A
bstra
ctio
n
Engine Abstraction
Stor
age
Abs
tract
ion
将数据源、执行引擎和存储结构抽象为接口,允许支持更多的数据源接入,也支持采用其它技术作为构建与存储引擎
Effective Cloud User Group www.ecug.org
可插拔架构带来扩展的可能
HiveSource
Data Source Storage
Compute Engine
Hive Adaptor
…
JDBCSource
JDBC Adaptor
加载数据源
Map-reduceAdaptor
SparkAdaptor
…
Hbase Adaptor
Parquet Adaptor
保存 Cube …
Effective Cloud User Group www.ecug.org
第二步:Spark 代替MapReduce进行构建 [已完成]
RDD-1
RDD-2
RDD-3
RDD-4
RDD-5
Apache Spark 正在取代 Hadoop 成为大数据处理的核心技术
Kylin 利用 Spark 进行 Cube计算:
• 将每一层的 cuboid抽象为一个 Spark 弹性数据集(RDD)
• 使用 Cache中的父 RDD来生成子 RDD
• 子 RDD生成后,导出并清理父 RDD
Effective Cloud User Group www.ecug.org
Full on Spark 引擎
• Data Source
Distinct
• Dim Dictionary
Join
• Flat Table
Encode
• Encoded Flat Table
Aggregate
• Base Cuboid
Aggregate
• Storage
Cleanup
所有的构建步骤都使用 Spark任务执行,为构建脱离 Hadoop 提供可能
Effective Cloud User Group www.ecug.org
使用 Spark构建的优点
• 构建效率提升1倍以上
• 简化 Kylin的构建逻辑
• 向 Cloud Native迈出重要一步
ü 节省1半以上的时间
ü 使用函数式编程来精简代码
ü Spark 可以独立部署,可以容器运行ü 抛去对 Hadoop平台的依赖
Effective Cloud User Group www.ecug.org
第三步: Docker 运行 Kylin [已完成]
Kylin 查询服务本身无状态,天然适合 docker化;
通过 Zookeeper 注册和协调多个节点角色分配
Effective Cloud User Group www.ecug.org
使用 Kubernetes部署 Kylin集群1.创建 ConfigMap以配置 Kubernetes资源对象
2.创建 Service 和 StatefulSet
3. Enjoy Kylin cluster
Effective Cloud User Group www.ecug.org
第五步:Parquet 代替 HBase(开发中)
Parquet 存储的优点
• 以原生 Apache Parquet格式作为 Cube存储,自带 schema和
编码,更易于与大数据生态整合
• 真正列存,I/O 效率高,压缩率高
• 与 Spark有很好的结合,利用 Spark 并行化、向量化技术提
速
• 可存储在对象存储上,实现服务无状态化
Effective Cloud User Group www.ecug.org
第六步:查询分布式化(开发中)
从基于 Apache Calcite 的单点执行到基于Spark DataFrame 的分布式执行
• 基于 Calcite 的查询引擎,将各个节点 Cube 数据拉取
到查询节点进行后续处理
• 当查询复杂、数据量大的时候,容易卡死和 OOM
• 基于 Spark DF 的查询执行器,所有步骤均分布式并
行执行
• 消除单点,提升稳定性
Sort
Aggr
Project
Filter
Cube
基于 Calcite(分布式+单机) 分布式计算
(Coprocessor)
基于 Spark DF(完全分布式)
SortDF
AggDF
ProjectDF
FilterDF
CuboidDF
Effective Cloud User Group www.ecug.org
Apache Kylin NG目标:云原生的大数据 OLAP 引擎
Data analytics
Apache Kylin
Container Service (K8S, Docker)
Interactive Reporting Dashboard
OLAP / Data mart
Resource Orchestration
Data Lake Source file, Streams, Parquet on Object Storage (S3, ADSL)
Metadata
Security