文章摘自《Apache Kylin 权威指南》

一、概述

Apache Kylin 是Hadoop大数据平台上的一个开源的联机分析处理(OLAP)引擎。它采用多维立方体预计算技术,将大数据的SQL查询速度从之前的分钟乃至小时级别提升到亚秒级别,这种百倍、千倍的数据提升,为超大规模数据集上的交互式大数据分析奠定了基础。

二、Apache Kylin的使命

Apache Kylin的使命是实现超高速的大数据OLAP分析,也就是要让大数据分析像使用数据库一样简单迅速,用户的查询请求可以在秒级返回,交互式数据分析以前所未有的速度释放大数据里潜藏的知识和信息,以使我们在面对未来的挑战时占得先机。

三、为什么要使用Apache Kylin?

自2006年Hadoop诞生以来,大数据的存储和批处理问题得到了妥善解决,而如何高速地分析数据也就成为下一个挑战。于是各种“SQL-on-Hadoop”技术应用而生,其中以Hive为代表,Impala、Presto、Phoenix、Drill、Spark SQL 等紧随其后,他们的主要技术是“大规模平行处理(MPP)”和“列式存储”。

大规模并行处理可以调动多台机器进行并行计算,用线性增加资源来换取计算时间的线性下降。列式存储则将记录按列存放,不仅在访问时可以只读取需要的列,更可以利用存储设备擅长连续读取的特点,大大提升读取的速率。这两关键技术使得Hadoop上的SQL查询速度从小时提高到了分钟级。

然而分钟级别的查询响应仍然与交互式分析的实现需求相差很远。分析师敲入查询指令,按下回车键后,需要去倒杯咖啡,静静地等待结果。得到结果后才能根据情况调整查询,再做下一轮分析。如此反复,一个具体场景分析常常需要几个小时甚至几天才完成,数据分析效率低下。

这是因为大规模并行处理和列式存储虽然提高了计算和存储的速度,但并没有改变查询问题本身的时间复杂度,也没有改变查询时间与数量级呈线性增长的关系这一事实。假设查询1亿条记录耗时1分钟,那么查询10亿条记录就需要10分钟,查询100亿条就至少需要1小时40分钟。

当然有很多优化技术可以缩短查询的时间,比如更快的存储、更高效的压缩算法等,但总体来说,查询性能与数据量呈线性相关这一事实无法改变。虽然大规模并行处理允许十倍或者百倍地扩张计算集群,以保持分钟级别的查询速度,但购买和部署十倍、百倍的计算集群又很难做到,更何况还需要高昂的硬件运维技术。

另外,对于分析师来说,完备的、经过验证的数据模型比分析性能更加重要,直接访问纷繁复杂的原始数据并进行相关分析其实并不是很美好的体验,特别是在超大规模数据集上,分析师们把更多的精力花费在了等待查询结果上,而不是用在更加重要的建立领域模型上。

四、那么Kylin是如何解决关键问题的呢?

Apache Kylin 的初衷就是解决千亿、万亿条记录的秒级查询问题,其中的关键就是打破查询时间随着数据量呈线性增长的这一规律。结合大数据Olap场景,可以得出两个事实:1⃣️大数据查询要的一般是统计结果,是多条记录经过聚合函数计算后的统计值。原始的记录则不是必需的,或者被访问的频率和概率极低。2⃣️聚合是按照维度进行的,而维度的聚合可能性是有限的,一般不随数据的膨胀而线性增长。基于以上两点得出新思路—“预计算”。

五、Kylin的工作原理

Kylin的工作原理本质上是MOLAP Cube,也就是多维立方体分析。

维度:观察数据的角度。一般是一组离散的值。

度量:被聚合的统计值。一般是连续值。

给定一个数据模型,可以对其上所有维度进行组合。对于N个维度来说,所有组合的可能性又2的N次方种。对每一种维度的组合,将度量做聚合运算,运算的结果保存为一个物化视图,称为Cuboid。将所有维度组合的Cuboid作为一个整体,被称为Cube。简单来说,一个Cube就是许多按照维度聚合的物化视图的集合。

kylin的工作原理就是对数据模型做Cube预计算,并利用计算的结果加速查询。过程如下:

1⃣️指定数据模型,定义维度和度量。

2⃣️预计算Cube,计算所有Cuboid并将其保存为物化视图。

3⃣️执行查询时,读取Cuboid,进行加工运算产生查询结果。

由于kylin的查询过程不会扫描原始记录,而是通过预计算预先完成表的关联、聚合等复杂运算,并利用预计算的结果来执行查询,因此其速度比非预计算的查询技术一般要快一个到两个数量级。并且在超大数据集上其优势更明显。当数据集达到千亿乃至万亿级别时,kylin的数据甚至可以超越其他非预计算技术1000倍以上。

六、Kylin的主要特点

1、标准SQL接口

2、支持超大数据集

3、亚秒级响应

预计算,带来了优异的查询响应速度。案例 对1000多亿条数据构建了立方体,90%的查询性能在1.18s以内。

4、可伸缩性和高吞吐率

一个Kylin实例中,可以每秒处理近70个查询,已经远远高于每秒20个查询的一般水平。

5、BI及可视化工具集成

七、与其他开源产品的比较

Apache kylin与 Apache Drill、Apache Impala、Druid、Hive、Presto、SparkSQL进行比较:

从底层技术的角度来看,这些开源产品有很大的共性,一些底层技术几乎被所有的产品一致采用。

[]大规模平行处理(MPP): 可以通过增加机器的方式来扩容处理速度,在相同的时间内处理更多的数据。

[]列式存储:通过按列存储提高单位时间内数据的I/O吞吐率,还能跳过不需要访问的列。

[]索引:利用索引配合查询条件,可以迅速跳过不符合查询条件的数据块,仅扫描需要扫描的数据内容。

[]压缩:压缩数据然后存储,使得存储的密度更高,在有限的I/O速率下,在单位时间内读取更多的记录。

可以看到,所有的这些方法都只是提高了单位时间内计算机处理数据的能力,当大家都采用这些技术时,彼此之间的区别将只停留在实现层面的代码上。重要的是,这些技术都不会改变一个事实,那就是处理时间与数据量之间的正比例关系。

当数据量翻倍,在不扩容的前提下,MPP需要两倍的时间来完成计算;列式存储需要两倍的存储空间;索引下符合条件的记录数也会翻倍;压缩后的数据大小也是之前压缩后的两倍。因此,查询速度也会随之变成之前的一半。当数据量十倍百倍地增加时,这些技术的查询速度就会十倍百倍的下降,最终无法完成查询。

Kylin的特色在于,在上述底层技术之外,另辟蹊径地使用了独特的Cube预计算技术。预计算事先将数据按维度组合进行了聚合,将结果保存为物化视图。经过聚合,物化视图的规模就只由维度的基数决定,而不再随数据的增加呈线性增长。理论上它可以在任意大的数据规模上达到O(1)常数级别的查询速度,而其他如大规模并行计算和列式存储的查询速度都在O(N)级别,与数据规模呈线性关系。

Apache Kylin(一)相关推荐

  1. Apache Kylin在绿城客户画像系统中的实践

    前言 \\ 作为国内知名的房地产开发商,绿城经过24年的发展,已为全国25万户.80万人营造了美丽家园,并将以"理想生活综合服务提供商"为目标,持续为客户营造高品质的房产品和生活服 ...

  2. Apache Kylin v2.5.0正式发布,开源分布式分析引擎

    文章转载自开源中国,作者 Apache Kylin 社区 日前,Apache Kylin 社区宣布,Apache Kylin v2.5.0 正式发布. Apache Kylin 是一个开源的分布式分析 ...

  3. 大数据分析神兽麒麟(Apache Kylin)

    1.Apache Kylin是什么? 在现在的大数据时代,越来越多的企业开始使用Hadoop管理数据,但是现有的业务分析工具(如Tableau,Microstrategy等)往往存在很大的局限,如难以 ...

  4. Apache Kylin v2.6.1 发布,开源的分布式分析引擎

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   Apache Kylin v2.6.1 发布了.新版是个 Bug 修复版本,包含7个功能增强和19个 Bug 修复 ...

  5. Apache Kylin Cube 的构建过程

    不多说,直接上干货! 1. Cube的物理模型 Cube物理模型 如上图所示,一个常用的3维立方体,包含:时间.地点.产品.假如data cell 中存放的是产量,则我们可以根据时间.地点.产品来确定 ...

  6. 关于apache kylin 安装32位linux办法

    最近公司在使用apache kylin做实时开发访问,但是自己集群是linux32 只能安装JDK32位的受限只能3G多内存,而apachekylin 默认是4G内存,需要JDK64位支持. 解决办法 ...

  7. Apache Kylin权威指南1.3 Apache Kylin的工作原理

    1.3 Apache Kylin的工作原理 Apache Kylin的工作原理本质上是MOLAP(Multidimensional Online Analytical Processing)Cube, ...

  8. 小米大数据:借助Apache Kylin打造高效、易用的一站式OLAP解决方案

    如今的小米不仅是一家手机公司,更是一家大数据与人工智能公司.随着小米公司各项业务的快速发展,数据中的商业价值也愈发突显.而与此同时,各业务团队在数据查询.分析等方面的压力同样正在剧增.因此,为帮助公司 ...

  9. 如何为Apache Kylin快速开发新数据源?

    2019独角兽企业重金招聘Python工程师标准>>> 在近期的Apache Kylin Innovation Meetup 上,Kyligence的技术合伙人兼生态合作技术总监李栋 ...

  10. 初探Apache Kylin【麒麟】

    本篇文章就概念.工作机制.数据备份.优势与不足4个方面详细介绍了Apache Kylin. Apache Kylin 简介 1. Apache kylin 是一个开源的海量数据分布式预处理引擎.它通过 ...

最新文章

  1. Vue.js子组件向父组件通信
  2. java继承和引用_浅谈Java继承、传递
  3. Python 函数参数的分类及使用方法
  4. 【LeetCode】【数组归并】Merge k Sorted Lists
  5. 通过js让页面中的元素上下居中的写法
  6. Android学习之SQLite
  7. 数据结构:排序算法之插入排序
  8. R语言smoothHR包_SmoothHR產品官方網站 全新體驗、正式上線 !
  9. 项目研发流程及管理之我见
  10. ReportViewer教程(15)-矩阵报表-4
  11. [原创]按键小精灵通用去广告破解补丁
  12. 【华为敏捷/DevOps实践】5. 如何避免DevOps变革的六大“焦油坑”
  13. leetcode 338 比特位计数
  14. os.path 大全
  15. JD_Source Code for problem 1581
  16. python模块之junos-eznc
  17. 关键路径过程详解、算法及其实现
  18. [信息收录] attiny 85
  19. 微信公众号原主体已注销 如何办理账号迁移及公证书?
  20. 爱创课堂分享web前端学习路线自学如何找到工作

热门文章

  1. 维乐美学系列:美丽背后的匠心打造
  2. 玩转华为数据中心交换机系列 | 配置M-LAG维护模式下升级示例
  3. ROS自主导航学习———ROS通信机制
  4. js 和 min.js 有什么区别
  5. 个人对软件工程的期望及个人目标
  6. 晨曦记账本快速搜索收支账的基础操作
  7. 【安全开发】IOS安全编码规范
  8. N! hdu 1042
  9. 如何修复无法打开的Excel文件,三大原因三大方法为你解决
  10. nisp和cisp证书有什么区别