Apache Kylin(一):概述

Apache kylin 概述

1. Apache Kylin出现的背景(大数据发展历程)

数据从传统数据库到hadoop
随着大数据领域的发展,各种新技术层出不穷,突破传统数据库存储瓶颈的Hadoop生态的愈发健全,使得越来越多的企业将存储于传统数据库的数据纷纷迁移到hadoop平台中来,hadoop优秀的容灾和可扩展性获得了业界的一致认可。
大数据场景下的需求实现
大数据平台的出现,不只是为了解决数据存储,基于各种查询分析的需要,用户向hadoop提出了新的要求,在早期,hadoop的数据仓库hive秉承传统数据库查询风格,使用HQL就能类似于数据库操作一样将sql语法翻译成mapreduce任务,计算查出用户所要的结果。
问题显现:MapReduce->spark
由于MapReduce的每一步计算,都会把这一步的计算结果存储到磁盘当中,io操作的时间开销巨大,随着需求越来越复杂,多步读写的开销,很快的迫使了spark、impala这种通过血缘关系溯源,计算过程全部在内存中实现的引擎出现,有了hive on spark模式。
百亿级数据量的挑战
2013年,eBay的数据量级达到了平台存储瓶颈,Hadoop大数据平台虽然能存储和批量处理大规模数据,但无法提供高效的交互式查询,因为一旦数据量级过大的时候,查询一张大表意味着要遍历所有上百亿条数据,来进行聚合分类等操作,其结果,往往是一个简单维度的聚合,需要几十分钟,BI工程师们“显得很悠闲”,写好一条查询语句,要去倒一杯咖啡,数据还没计算出来。我们知道很多时候,分析的工程师们需要知晓上一个查询的结果,来决定下一个查什么,这就导致了他们把大部分时间花在等待查询结果当中,在这种前提下,eBay的中国卓越中心,研发并开源了Apache Kylin。

2. Kylin的工作原理

Kylin的工作原理本质是MOLAP(多维立方体分析),简单来讲,就是在数据被load进hive的时候,做一个预计算,生成数据立方体Cube。
预计算和数据立方体 :数据load进来的时候,根据不同的维度,预先做好聚合计算,比如来了一千万条‘2018-09-01 08:09:00 XXX YYY’的数据,通过预计算,这条数据被算到‘2018-09-01’中,算出sum(XXX),avg(XXX)等度量,这样,这一千万条数据,在数据立方体里面就是一条2018-09-01的数据,之后用户查询数据where dt=’2018-09-01‘的时候就不需要再去遍历一千万条数据了。利用预计算和数据立方体,每次再大的原数据量,在数据立方体里面都只有一条2018-09-01的记录。而用户查询时候,是与数据立方体交互的,所以查询时间就被缩短到了亚秒级。

3. Kylin的主要特点

  • 支持SQL接口:对用户来说,查询使用的仍然是SQL,尽管查询的是cube,这也是Kylin能快速推广的原因之一
  • 支持超大数据集 : kylin支撑的数据集大小没有上限,只取决于分布式系统的承载能力
  • 亚秒级响应 : 通过预计算,Kylin的响应速度在90%情况下,都可以在3s内返回结果
  • 可伸缩性和高吞吐率 : 随着kylin服务器增多,kylin的并发吞吐率呈线性增长
  • BI可视化工具集成: Kylin提供了ODBC、JDBC、和Restful接口,便于集成开发

4. 与其他开源产品比较

大规模并行、列式存储、索引、压缩 这些提高单位时间内处理数据能力的技术被广泛应用于各个组件(Apache Drill、Apache Impala、Durid、Hive、Presto、SpaekSQL)中,当大家都采用这些技术的时候,它们之间的区别只停留在实现层面的代码细节上,而且它们都不能改变处理时间跟数据量之间的正比线性关系。

而Kylin另辟蹊径的Cube预计算技术,使查询速度不在受限于数据大小,数据量越大,越能体现出kylin的速度优势。

你可能感兴趣的:(hadoop,Kylin)