1.1 背景和历史

今天,大数据领域的发展如火如荼,各种新技术层出不穷,整个生态欣欣向荣。作为大数据领域最重要的技术——Apache Hadoop,从诞生至今已有10周年。它最初只是致力于简单的分布式存储,然后在其之上实现大规模并行计算,到如今它已在实时分析、多维分析、交互式分析、机器学习甚至人工智能等方面都有着长足的发展。

2013年年初,eBay内部使用的传统数据仓库及商业智能平台应用碰到了瓶颈,即传统的架构只支持垂直扩展,通过在一台机器上增加CPU和内存等资源来提升数据处理能力,相对于数据指数级的增长,单机扩展很快就达到了极限。另一方面,Hadoop大数据平台虽然能存储和批量处理大规模数据,但与BI平台的连接技术依然不成熟,无法提供高效的交互式查询。于是寻找更好的方案便成为了当务之急。正好在2013年年中的时候eBay公司启动了一个大数据项目,其中的一块内容就是BI on Hadoop的预研。当时eBay中国卓越中心组建了一支很小的团队,他们在分析和测试了多种开源和商业解决方案之后,发现没有一种方案能够完全满足当时的需求,即在超大规模数据集上提供秒级的查询性能,并能基于Hadoop与BI平台无缝整合等。在研究了多种可能性之后,最终eBay 的Apache Kylin核心团队决定自己实现一套OLAP on Hadoop的解决方案, 以弥补业界的这个空白。与此同时,eBay公司也非常鼓励开源各个项目,

回馈社区,eBay的Apache Kylin核心团队在向负责整个技术平台的高级副总裁做汇报的时候,得到的一个反馈就是“要从第一天就做好开源的准 备”

 
   

图1-1 Hortonworks CTO在Twitter上对Apache Kylin的评论

经过一年多的研发,在2014年的9月底,Kylin平台在eBay内部正式上线。它一上线便吸引了多个种子客户。Kylin在Hadoop上提供了标准的、友好的SQL接口,外加查询速度非常迅速,原本要用几分钟的查询现在几秒钟就能返回结果,BI分析的工作效率得到了几百倍的提升,因此Kylin 获得了公司内部客户、合作伙伴及管理层的高度评价。2014年10月1日, 项目负责人韩卿将Kylin的源代码提交到github.com并正式开源,当天就获得了业界专家的关注和认可,如图1-1所示的是Hortonworks的CTO在

Twitter上对此给出的评价。

很快,Hadoop社区的许多朋友都鼓励eBay的Apack Kylin核心团队将该项目贡献到Apache软件基金会(ASF),让它能够与其他大数据项目一起获得更好的发展,在经过一个月的紧张筹备和撰写了无数个版本的项目建议书之后,Kylin项目于2014年11月正式加入Apache孵化器项目,并有多位资深的社区活跃成员作我们的导师。

在项目组再次付出无数努力之后,2015年的11月,Apache软件基金会宣布Apache Kylin正式成为顶级项目。这是第一个也是唯一一个完全由我国团队贡献到全球最大的开源软件基金会的顶级项目。项目负责人韩卿成为Apache Kylin的项目管理委员会(PMC)主席,也是Apache软件基金会160多个顶级项目中的唯一一个中国人,Apache Kyln创造了历史。正如Kylin的导师——Apache孵化器副总裁Ted Dunning在ASF官方新闻稿中的评价:“…Apache Kylin代表了亚洲国家,特别是中国,在开源社区中越来越高的参与度…”。

2016年3月,由Apache Kylin核心开发者组建的创业公司Kyligence正式成立。就如每一个成功的开源项目背后都有一家创业公司一样

(Hadoop领域有Cloudera、Hortoworks等;Spark领域有Databricks;Kafka领域有Conf?luent),Kylin也可以通过Kyligence的进一步投入保持高速研发,并且Kylin的社区和生态圈也会得到不断的发展和壮大,可以预见这个开源项目将会越来越好。

在业界最负盛名的技术类独立评选中,InfoWorld的Bossie Award每年都会独立挑选和评论相关的技术、应用和产品等。2015年9月,Apache Kylin获得了2015年度的“最佳开源大数据工具奖”,2016年9月,Apache Kylin再次蝉联此国际大奖,与Google TensorFlow齐名。这是业界对Apache Kylin的充分认可和褒奖。

1.2 Apache Kylin的使命

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

1.2.1 为什么要使用Apache Kylin

自从10年前Hadoop诞生以来,大数据的存储和批处理问题均得到了妥善解决,而如何高速地分析数据也就成为了下一个挑战。于是各式各样的“SQL on Hadoop”技术应运而生,其中以Hive为代表,Impala、Presto、Phoenix、Drill、SparkSQL等紧随其后。它们的主要技术是“大规模并行处理”(Massive Parallel Processing,MPP)和“列式存储”(Columnar Storage)。大规模并行处理可以调动多台机器一起进行并行计算,用线性增加的资源来换取计算时间的线性下降。列式存储则将记录按列存放,这样做不仅可以在访问时只读取需要的列,还可以利用存储设备擅长连续读取的特点,大大提高读取的速率。这两项关键技术使得Hadoop上的SQL查询速度从小时提高到了分钟。

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

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

么查询10亿条记录就需10分钟,100亿条记录就至少需要1小时40分钟。当然,可以用很多的优化技术缩短查询的时间,比如更快的存储、更高效的压缩算法,等等,但总体来说,查询性能与数据量呈线性相关这一点是无法改变的。虽然大规模并行处理允许十倍或百倍地扩张计算集群,以期望保持分钟级别的查询速度,但购买和部署十倍或百倍的计算集群又怎能轻易做到,更何况还有高昂的硬件运维成本。

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

1.2.2 Apache Kylin怎样解决关键问题

Apache Kylin的初衷就是要解决千亿条、万亿条记录的秒级查询问题,其中的关键就是要打破查询时间随着数据量成线性增长的这个规律。仔细思考大数据OLAP,可以注意到两个事实。

  • 大数据查询要的一般是统计结果,是多条记录经过聚合函数计算后的统计值。原始的记录则不是必需的,或者访问频率和概率都极低。
  • 聚合是按维度进行的,由于业务范围和分析需求是有限的,有意义

的维度聚合组合也是相对有限的,一般不会随着数据的膨胀而增长。

基于以上两点,我们可以得到一个新的思路——“预计算”。应尽量多地预先计算聚合结果,在查询时刻应尽量使用预算的结果得出查询结

果,从而避免直接扫描可能无限增长的原始记录。

举例来说,使用如下的SQL来查询10月1日那天销量最高的商品:

 
   

用传统的方法时需要扫描所有的记录,再找到10月1日的销售记录,

然后按商品聚合销售额,最后排序返回。假如10月1日有1亿条交易,那么查询必须读取并累计至少1亿条记录,且这个查询速度会随将来销量的增加而逐步下降。如果日交易量提高一倍到2亿,那么查询执行的时间可能也会增加一倍。

而使用预计算的方法则会事先按维度[sell_date,item]计算sum(sell_amount)并存储下来,在查询时找到10月1日的销售商品就可以直接排序返回了。读取的记录数最大不会超过维度[sell_date,item]的组合数。显然这个数字将远远小于实际的销售记录,比如10月1日的1亿条交易包含了100万条商品,那么预计算后就只有100万条记录了,是原来的百分之一。并且这些记录已经是按商品聚合的结果,因此又省去了运行时的聚合运算。从未来的发展来看,查询速度只会随日期和商品数目的增长而变化,与销售记录的总数不再有直接联系。假如日交易量提高一倍到2亿,但只要商品的总数不变,那么预计算的结果记录总数就不会变,查询的速度也不会变。

“预计算”就是Kylin在“大规模并行处理”和“列式存储”之外,提供给

大数据分析的第三个关键技术。

Kylin 1 背景、历史与使命的更多相关文章

  1. kylin的clube合并后清理hbase中产生的相关历史表

    kylin的clube合并后清理hbase中产生的相关历史表 kylin 的clube 历史的每次构建,都会产生一个hbase的表:虽然可以设置按照一定策略合并,但是合并后hbase 历史表不会被自动 ...

  2. 【转】使用Apache Kylin搭建企业级开源大数据分析平台

    http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭 ...

  3. 使用Apache Kylin搭建企业级开源大数据分析平台

    转:http://www.thebigdata.cn/JieJueFangAn/30143.html 我先做一个简单介绍我叫史少锋,我曾经在IBM.eBay做过大数据.云架构的开发,现在是Kylige ...

  4. 《基于Apache Kylin构建大数据分析平台》

    Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...

  5. IE浏览器打开chorme浏览器,如何打开其他浏览器

    看到这个标题是否感觉奇怪,为什么要用IE浏览器打开chorme或者火狐浏览器等,这个功能从开发者来说不是一个好的需求,但确实是真实存在的,有用公司的背景历史比较复杂,而且公司有过长期的开发历史,这导致 ...

  6. Kafka 设计与原理详解

    一.Kafka简介 本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料. 转载请注明出处 : 本文链接 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索. ...

  7. HTTP/2协议–特性扫盲篇

    HTTP/2协议–特性扫盲篇 随着web技术的飞速发展,1999年制定的HTTP 1.1已经无法满足大家对性能的要求,Google推出协议SPDY,旨在解决HTTP 1.1中广为人知的性能问题.SPD ...

  8. conda常用命令总结

    conda 一些背景历史以及如何安装这里就不说了,因为实在是漫天都在飞,随便都能找到相关的资料.我这里只是将平时常用到的 Conda 命令进行汇总,以备不时之需,因为我也是一个忘性极大的人,实在是记不 ...

  9. 最全Kafka 设计与原理详解【2017.9全新】

    一.Kafka简介 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何 ...

随机推荐

  1. Python中的条件判断、循环以及循环的终止

    条件判断 条件语句是用来判断给定条件是否满足,并根据判断所得结果从而决定所要执行的操作,通常的逻辑思路如下图: 单次判断 形式 if <判断条件>: <执行> else: &l ...

  2. PB 之多行标题报表

    第一种 1.添加一个text,将背景色选为非透明色:position中的layer,选为foreground,这样就可以拖动列宽了         2.在position属性标签页的width里,点右 ...

  3. Elasticsearch-6.7.0系列(七)SpringCloud连接ES集群,使用ES用户名密码

    pom.xml代码: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...

  4. golang ---获取内存信息

    package main import ( "fmt" "syscall" "unsafe" ) var kernel = syscall. ...

  5. core文件问题

    core文件问题 Linux系统core涉及到的问题 core文件的问题具体可以参照系统的man手册(man core) 能否生成core文件 ulimit -c 磁盘权限问题 进程权限问题 生成co ...

  6. OC 组合实现多继承

    OC无法完全先C++使用多继承,但可以采用组合的模式来代替继承模式.(协议实现)实现多继承的代码:举例现在ClassC需要继承ClassA中methodA.ClassB中methodB,具体的代码为: ...

  7. JavaScript常用数组操作方法,包含ES6方法

    一.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var arr2 = [4,5]; ...

  8. 设置redis开机自动启动

    注意:win7执行命令前面可不需要加路径,win10必须要加路径 命令: redis-server --service-install redis.windows.conf 执行完成之后,打开服务管理 ...

  9. SAP云平台CloudFoundry环境里route 超过quota的错误处理

    试图往SAP Cloud Platform CloudFoundry用命令行CLI部署应用时,遇到如下错误: 原因是因为这个新建的名为Haytham的subaccount没有分配application ...

  10. C# 利用特性(Attribute)实现通用实体类数据合法校验

    用过asp.net mvc 的都应该知道,在实体类上添加一些特性,可以实现后端实体的数据校验,这里简单实现一下 实现原理:利用反射获取实体的每一个属性,并通过属性获取属性上标注的特性,调用特性的Val ...