前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系

正文

Apache Kylin 系统可以分为在线查询和离线构建两部分,技术架构如图所示,在线査询的模块主要处于上半区,而离线构建则处于下半区。

离线构建

我们首先来看看离线构建的部分。

从图中可以看出,数据源在左侧,主要是 Hadoop/Hive/Kafka/RDBMS ,保存着待分析的用户数据。

根据元数据的定义,下方构建引擎从数据源抽取数据,并构建 Cube 。

数据以关系表的形式输入,且必须符合星形模型( Star Schema )。

Map Reduce 和 Spark 是主要的构建技术,Kylin 4.0 版本中Spark Engine 是唯一的构建引擎。

构建后的 Cube 保存在右侧的存储引擎中,选用 Parquet 作为存储。

在 3.x 以及之前的版本中,kylin 一直使用 HBase 作为存储引擎来保存 cube 构建后产生的预计算结果。HBase 作为 HDFS 之上面向列族的数据库,查询表现已经算是比较优秀,但是它仍然存在以下几个缺点:

  1. HBase 不是真正的列式存储;
  2. HBase 没有二级索引,Rowkey 是它唯一的索引;
  3. HBase 没有对存储的数据进行编码,kylin 必须自己进行对数据编码的过程;
  4. HBase 不适合云上部署和自动伸缩;
  5. HBase 不同版本之间的 API 版本不同,存在兼容性问题(比如,0.98,1.0,1.1,2.0);
  6. HBase 存在不同的供应商版本,他们之间有兼容性问题。

针对以上问题,社区提出了对使用 Apache Parquet + Spark 来代替 HBase 的提议,理由如下:

  1. Parquet 是一种开源并且已经成熟稳定的列式存储格式;
  2. Parquet 对云更加友好,可以兼容各种文件系统,包括 HDFS、S3、Azure Blob store、Ali OSS 等;
  3. Parquet 可以很好地与 Hadoop、Hive、Spark、Impala 等集成;
  4. Parquet 支持自定义索引。

在线查询

完成了离线构建之后,用户可以从上方查询系统发送 SQL 进行査询分析。

Kyin 提供了各种 RestAPI 、 JDBC / ODBC 接口。

无论从哪个接口进入, SQL 最终都会来到 Rest 服务层,再转交给查询引擎进行处理。

这里需要注意的是, SQL 语句是基于数据源的关系模型书写的,而不是 Cube 。

Kylin 在设计时刻意对査询用户屏蔽了 Cube 的概念,分析师只需要理解简单的关系模型就可以使用 Kylin ,没有额外的学习门槛,传统的 SQL 应用也很容易迁移。

查询引擎解析 SQL ,生成基于关系表的逻辑执行计划,然后将其转译为基于 Cube 的物理执行计划,最后查询预计算生成的 Cube 并产生结果。

整个过程不会访问原始数据源。

Apache Kylin 1.5 版本的可扩展架构

Apache Kylin 1.5 版本引入了“可扩展架构”的概念。

可扩展指 Kylin 可以对其主要依赖的三个模块做任意的扩展和替换。

Kylin 的三大依赖模块分别是数据源构建引擎存储引擎

在设计之初,作为 Hadoop 家族的一员,这三者分别是 Hive 、 MapReduce 和 HBase 。

但随着推广和使用的深入,渐渐有用户发现它们均存在不足之处。

比如,实时分析可能会希望从 Kafka 导入数据而不是从 Hive,而 Spark 的迅速崛起,又使我们不得不考虑将 MapReduce 替换为 Spark ,以期大幅提高 Cube 的构建速度,至于 HBase ,它的读性能可能还不如 Cassandra 或 Kudu 等。

可见,是否可以将一种技术替换为另一种技术已成为一个常见的问题。

于是 Kylin 1.5 版本的系统架构进行了重构,将数据源、构建引擎、存储引擎三大依赖抽象为接口。

深度用户可以根据自己的需要做二次开发,将其中的一个或多个替换为更适合的技术。

一篇文章搞懂 Apache Kylin 4.x 的技术架构相关推荐

  1. 一篇文章搞懂最流行的容器化技术Docker

    说在前面的话 本篇文章什么样的人适合看? 刚入门学习docker的,看完对docker会有一个通篇的认识 有经验的人,在知识大爆炸时代,技术很多,没有人能记住所有东西,适合复盘的时候看 我想说的话:这 ...

  2. c++ 计算正弦的近似值_一篇文章搞懂正弦保真性

    本文介绍数字信号处理中"正弦保真性"这一概念,想要更好地理解本文所述内容,建议读者先阅读<一篇文章搞懂卷积>. 正弦保真性定义 一个正弦信号作为线性时不变系统的输入时, ...

  3. 一篇文章搞懂filebeat(ELK)

    一篇文章搞懂filebeat(ELK) https://www.cnblogs.com/zsql/p/13137833.html 目录 一.filebeat是什么 1.1.filebeat和beats ...

  4. 一篇文章搞懂架构师的核心技能

    " 这是架构师系列的第一篇:核心技能,希望这个系列能完全揭示架构师这个职位:我先从核心技能开始,后续还有架构师之路,架构实战等架构师系列文章. 本文作者 陈睿 优知学院创始人,前携程定制旅游 ...

  5. 组件化开发实战_一篇文章搞懂什么是前端“组件化”开发

    学过网页的朋友都知道,制作一个网页离不开HTML.CSS和JavaScript技术.对于初学者来来说,掌握这3门技术就已经很不容易了,为什么前端为什么又要搞出来一个"组件化"开发的 ...

  6. reactrouter监听路由变化_一篇文章搞懂前端路由原理解析和实现方式

    在单页应用如此流行的今天,曾经令人惊叹的前端路由已经成为各大框架的基础标配,每个框架都提供了强大的路由功能,导致路由实现变的复杂. 想要搞懂路由内部实现还是有些困难的,但是如果只想了解路由实现基本原理 ...

  7. 【一篇文章搞懂】什么是分布式锁?为什么要用分布式锁?看这篇文章准没错!

    简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...

  8. 一篇文章搞懂STL中的空间配置器allocator(原创,多图,易懂)

    Table of Contents 0.引入 1.标准的空间配置器allocator 2.更为高效的空间配置器alloc 2.1----对象的构造与析构 2.1.1 对象的构造:::construct ...

  9. 一篇文章搞懂算法基础

    源码地址 https://github.com/javanan/DataStructure 目录 时间复杂度介绍 空间复杂度介绍 递归算法与非递归算法区别和转换 折半查找/二分查找算法 链表实现 反转 ...

最新文章

  1. VS2010中添加第三方库目录VC++ Directories
  2. GridView实现用...代替超长字符串
  3. Java代码优化思路(JVM的角度)
  4. html如何设置滚动动画,JavaScript 实现页面滚动动画
  5. java 黑窗运行_javaday1 如何使用黑窗口打出helloworld并且要学会使用和环境配置/eclipse...
  6. python把485读回来的转为位_我能用Python读取从计算机上接收到的Modbus RS485数据吗?...
  7. Jackson高级操作————流式API与JsonGenerator、JsonParser
  8. FinTech领域的风险控制——策略篇
  9. UIImageView 加入子UIImageView 导致内存泄露的问题
  10. python read函数菜鸟_Python
  11. 易筋SpringBoot 2.1 | 第十一篇:SpringBoot使用actuator
  12. java加载so文件_java加载so文件
  13. 「插件」Runner更新Pro版,帮助设计师远离996
  14. webstrom无法格式化局部html,格式化代码失效webstorm
  15. 局部特征——角点检测(Harris,Shi-Tomasi)
  16. 程序员去面试的梗!面试官:“哦了,明天来上班吧”
  17. java实现PC网站实现微信扫码登陆
  18. css的背景颜色有哪些,css背景颜色、背景图片,以及列表的多种样式
  19. C# 网络编程之获取本机名、ip地址、域名、物理位置
  20. 计算机网络与综合布线论文,网络综合布线论文参考

热门文章

  1. ppp协议提供服务器,ppp协议 - 作业部落 Cmd Markdown 编辑阅读器
  2. java 半双工_(3)java网络socket通信---半双工、全双工
  3. matlab将日线编成周线,通达信如何设置日线周线同屏
  4. 解决苹果、WIN 10和Ubuntu时间不同步的问题
  5. 关于解决required a bean of type ‘XXX’ that could not be found.的问题
  6. 华为阿里员工跳槽到微软后被集体抵制:请停止你的“奋斗逼”行为!
  7. appdmg构建dmg及原理刨析
  8. 俞敏洪:请成长起来,不要让自己只是变老
  9. uni-app 使用html2canvas生成海报,一步到位
  10. IDEA插件系列(66):Chronomorph插件——根据时间自动切换配色主题