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

http://www.thebigdata.cn/JieJueFangAn/30143.html

 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭建企业级开源大数据分析平台。

  正文如下

  我先做一个简单介绍我叫史少锋,我曾经在IBM、eBay做过大数据、云架构的开发,现在是Kyligence的技术合伙人。

  Kylin是这两年在国内发展非常快的开源大数据项目。今天大会合作厂商中有超过一半的企业已经在使用或者正在试用Kylin,应主办方邀请,今天跟大家做一个关于如何使用Kylin构建开源大数据分析平台的分享。

大数据

  这是我今天的议程,分两部分。

  前半部分:

  针对Kylin的初级和入门用户介绍Kylin项目的由来以及技术核心。

  后半部分:

  介绍如何基于Kylin构建开源大数据分析平台,把Hadoop数据平台和业务分析系统连接起来。

  Kylin(麒麟)是什么?我们听到过有麒麟芯片、麒麟OS等等,我们这个全名是叫Apache Kylin,是一个大数据分析的项目。

  从名字上或许可以猜到,它来自中国,的确这也是我们想让世界知道的,有一群来自中国的工程师在向Hadoop贡献着这样一个独特的项目。

  Apache Kylin 是在Hadoop之上的分布式的大数据分析引擎,它对外暴露的是标准SQL接口,支持TB到PB量级的数据,以秒级甚至亚秒级的时间返回响应。

  任何一个项目的诞生都有一定的背景和原因。

  今天我们看到越来越多的企业正在使用Hadoop,正在把Hadoop作为他们的基础平台来管理和分析数据。

  但是,企业在使用Hadoop的时候,往往发现有一个很大的Gap:

  一方面,现有的分析系统或分析工具,不能很好支持Hadoop; Hadoop上的数据的体量是远远超过传统单机或者传统关系型数据库的体量,原有的系统接入Hadoop根本无法承受这么大的数据量。

  此外这些遗留系统当初设计的时候就不是一个分布式的架构,没办法水平地扩容。

  另一方面,对于数据使用者或者分析师,让他们直接使用Hadoop,写MapReduce或者Spark的任务,是难以接受的。此外,Hadoop主要是用于做批量运算, 通常需要几十分钟,最快也要几分钟,对于分析人员来说很难有一个好的使用体验;等几分钟才能看到结果数据,大大影响了他们的工作效率。

  这个问题当年就是在eBay内部就被提出来,为此专门成立了一个项目。

  2013年的时候,Kylin项目的创始人韩卿(Luke),授命带着工程师研究这个难题,经过不断的尝试和摸索,Kylin探索出了在Hadoop之上做预计算、做Cube这条路线,这是之前没有人尝试过的。

  最终这个项目在2014年10月在Github开源 。一个月之后项目被Apache接受成为其一个孵化器项目。

  2015年11月份,经过Apache软件基金会(ASF)的投票,Kylin正式毕业,称为其大数据领域的一个顶级项目。值得一提的是,2015年的9月,Kylin获得 了美国InfoWorld评选的最佳开源大数据工具奖,同时获奖的还有Spark、Storm、Kafka等知名项目。

  2016年3月, 由Apache Kylin主要开发人员组成的公司Kyligence成立,致力于Kylin在业界的推广和使用。

  前面讲的是Kylin发展的历史,接下来讲一下Kylin核心技术。

  做过BI分析的人,对Cube都会有概念,就是用空间换时间。通过预计算把用户需要查询的维度以及他们所对应的考量的值,存储在多维空间里。

  当用户查询某几个维度的时候,通过这些维度条件去定位到预计算的向量空间,通过再聚合处理,快速返回最终结果给用户。

  所不同的是,Kylin的cube不是单一维度的组合,而是所有组合都可以计算。N个维度的完整Cube, 会有2的N次方种组合。

  Kylin架构是这样的,首先要求用户把数据放在Hadoop上,通过Hive管理,用户在Kylin中进行数据建模以后,Kylin会生成一系列的MapReduce任务来计算Cube,算好的Cube最后以K-V的方式存储在HBase中。

  分析工具发送标准SQL查询,Kylin将它转换成对HBase的Scan,快速查到结果返回给请求方。

  Cube是怎么计算出来的?

  这是在1.5之前版本中的的算法,也叫逐层算法。它会启动N+1轮MapReduce计算。

  第一轮读取原始数据,去掉不相关的列,只保留相关的。同时对维度列进行压缩编码;以此处的四维Cube为例,经过第一轮计算出ABCD组合,我们也称为Base Cuboid;

  此后的每一轮MapReduce,输入是上一轮的输出,以重用之前计算的结果,去掉要聚合的维度,算出新的Cuboid。以此往上,直到最后算出所有的Cuboid。

  Cube在Storage上是怎么存储的?

  星形模型会先被拉成一张平表, Dimension的值拼接在一起,后面接着是Metrics。为了标示这是哪几个维度的组合,会在行的开始加上Cuboid ID。最后,Cuboid ID + dimensions会被用作Rowkey,Metrics会作为Value放到Column中 。

  查询的时候,SQL语句被SQL解析器翻译成一个解释计划,从这个计划可以准确知道用户要查哪些表,它们是怎样join起来,有哪些过滤条件等等。Kylin会用这个计划去匹配寻找合适的Cube。

  如果有Cube命中,这个计划会发送到存储引擎,翻译成对存储(默认HBase)相应的Scan操作。Groupby和过滤条件的列,用来找到Cuboid,过滤条件会被转换成Scan的开始和结束值, 以缩小Scan的范围; Scan的result,Rowkey会被反向解码成各个dimension的值,Value会被解码成Metrics值 。

  接下来介绍Kylin的企业级特性;Kylin的特性比较多,这里就不一一列举,主要 讲一下对企业比较友好的特性。

  首先,毋庸置疑, Kylin对外暴露的是标准的SQL,支持大多数的SELECT语法,可以把各种工具和系统直接对接进来。这意味着当您使用Kylin的时候,不需要对业务系统做额外的改动。

  第二,Kylin提供了各种接入方式, 如ODBC、JDBC; 如果您的系统不使用这两种方式,还可以使用RESTful API查询。

  Kylin架构天生就非常适合Scale out,当查询量上升,单节点不能满足的时候,只需要相应增加Kylin的节点就可以满足。

  针对企业对安全的要求,我们有不同力度做安全控制。Kylin有不同用户角色做不同的事情,此外在project和cube层级可以定义ACL帮助在更细力度掌控对cube的使用。

  企业通常会使用目录服务来管理用户和群组,Kylin支持LDAP认证登录;如果对安全有更高的要求,Kylin还支持了基于SAML的单点登录(SingleSign-On),只要做一些配置就可以完成,不需要额外开发。

  Kylin提供了丰富的RESTful API,非常方便从用各种已有系统,如任务调度,监控等接入Kylin。Kylin的Web UI做到的事情通过API都可以做到。我们看到网易、美团等在Kylin之上开做了封装,跟他们各自的BI做深度的融合,就是利用了这个特性。

  怎么样用Kylin来构建大数据的分析平台?

  很简单。Kylin部署和安装是非常方便的,我们称为非侵入式的安装。如果你已经有一套Hadoop,安装Kylin,只要增加一台机器,下载Kylin安装包运行就可以了,Kylin使用标准Hadoop API跟各种组件通信,不需要对现有的Hadoop安装额外的agent。

  架构上就是个分层的结构,最底层是数据,放置在HDFS,其上是Hadoop层,需要有HBase、 Hive, MapReduce等。Kylin运行中Hadoop之上,安装好了之后,业务系统连入Kylin,Kylin把压力分布到Hadoop上做计算和查询。

  有四种典型的部署架构,分别从简单到复杂。

  第一种, Single instance的部署 ,通常一两天就可以完成。首先要有Hadoop,版本在2.4或以上。加一台Hadoop客户机,下载Kylin,即可一键启动。 建模人员通过Kylin Web登录,进行建模和cube的创建。业务分析系统或者工具发SQL到Kylin,Kylin查询Cube返回结果。

  这种部署最大特点是简单;缺点也很明显: Kylin是单点,并发请求上来的时候它会成为瓶颈,所以需要Cluster的部署。

  Kylin部署到Cluster非常简单,只需要增加Kylin的节点数,因为Kylin的metadata也是存储在HBase,只需要让它们用同一张metadata表就可以组成cluster 。通常在这个时候会用LDAP来管理用户权限。

  为了将负载分布到Kylin cluster, 需要建立一个Load Balancer(负载均衡器). 在LB这里可以启用SSL加密,申请域名,还可以安装防火墙,对外只暴露LB的地址和端口,确保Hadoop和Kylin在网络上对外是隔离的。

  业务系统和用户通过LB的地址访问Kylin。这样的部署,Kylin将不是单点,一个节点失效,不会影响业务分析。是不是这样就完美了呢?也不是。

  Kylin非常适合于做读写分离,原因是Kylin的工作负载有两种:

  前者是Cube的计算,它是批量的、延时很长的计算,有密集的CPU和IO;

  后者是在线的计算,是只读的,因为面向用户,它要求低延迟。Cube计算的过程会对集群带来很大的负载,从而产生噪音;所以我们有充足的理由进行读写分析。

  Kylin很容易做到这一点,你可以把HBase单独部署成一个集群,在部署Kylin的节点上,hadoop 配置指向运算的集群,Hbase的配置指向HBase集群。通过这样的部署,可以确保Hbase的查询可以在很短时间完成,而计算集群可以跟公司其它部门分享。

  现在目前Kylin使用中估计99%的情况是前面三种部署。还有一种更高级的部署是Staging和Prod多环境的部署。

  在一个大的企业里,往往需要多套环境,用于测试,生产等不同目的。

  举例来说,新用户上到Kylin来的时候,最初他对cube不是很了解,可能创建了一个设计不是很好的cube,导致产生大量的不必要的运算,或者查询花了很长时间。我们不希望这样的情况发生在生产环境,对其它业务造成影响,所以会建立一个staging,或者称为QA的环境。

  新用户必须先走staging环境创建和调优cube,直到cube性能达到要求,数据膨胀率也在一个可控范围内,这时候由用户提出请求,由Kylin专家来做一个审核,审核通过后,再允许这个cube被迁移到生产环境。

  这里Kylin提供了一个工具, 几分钟就可以讲一个Cube从一个环境迁移到另一个环境,不需要在新环境中重新build。 在生产环境的Cube,将不允许修改, 只能做增量的build 。

  这样做Staging和Prod分离,Prod中的cube都是经过专家的审核的,所以将是非常稳定的,里面的每个cube都是有据可循的。

  这就是关于Kylin的部署的分享。

  到今天Kylin已经有了很多的使用案例,这里简单列一些已知的。最早是在eBay,国内有京东、运营、美团、中国移动(包括广东移动和北京移动),还有微软 。

  以上是今天的分享,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

俄罗斯游戏软件:C语言应用初步感受

俄罗斯游戏软件:C语言应用初步感受C语言课程设以一节课,老师提供了一个C语言的飞俄罗斯方块让我们感受,我们所学的C语言课程,主要是各种语句的练习,这次是用我们所学过的知识来感受一个实际的系统。首先安装c-free&…

oracle xml中cdata,XML CDATA的作用

XML CDATA的作用更新时间:2009年09月01日 00:52:36 作者:当你用FLASH和xml结合做网站应用程序时,例如你做在我研究游戏排行榜中,当让人自由输入姓名时,人们可以输入一些符号,例如∶""、"/…

android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏

概述 在很app上都见过 可折叠的顶部导航栏效果。google support v7 提供了 CollapsingToolbarLayout 可以实现这个效果。效果图如下: 实现步骤 1. 写一个 CollapsingToolbarLayout,它有两个 子视图,一个就是上图显示的图片(降落伞…

linux ssh服务端下载文件,Linux SSH服务端配置文件设置

一 SSH概述SSH 由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统…

使用GPUImage实现视频滤镜

关于GPUImage 这里直接引用官方描述:The GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated filters and other effects to images, live camera video, and movies. In comparison to Core Image (part of iOS 5.0), GPUImag…

yunos5 linux内核,魅蓝5S、魅蓝5对比看差异 选Android还是YunOS?

原标题:魅蓝5S、魅蓝5对比看差异 选Android还是YunOS?几天前魅族发布了魅蓝5S,这款手机刚好2月20日上午10点开始销售,在魅族官方店和天猫都可以买到。作为新一代入门级手机,魅蓝5S最大得卖点恐怕就是加入了18W快充功能…

微软ASP.NET站点部署指南(3):使用Web.Config文件的Transformations

1. 综述 大多数程序里都会在Web.config里设置参数,并且在部署的时候需要更改。每次都手工更改这些配置很乏味,也容易出错。该章节将会告诉你如果通过自动化更新Web.config文件来避免这些问题。 2. Web.config Transformations 与Web Deploy Parameters 有…

myeclipse不编译

错误: org.eclipse.core.internal.registry.configurationElementHandle cannot be cast to org.eclipse.jdt.core.compiler.CompilationParticipant) 解决: 关掉MyEclipse>把MyEclipse安装目录下的configuration中的update目录删掉>重…

eclipse配置PHP自动提示代码

为什么80%的码农都做不了架构师?>>> 配置php自动提示代码 (html/js和PHP方法一样) 1. 打开 Eclipse的 Window -> Preferences -> PHPeclipse -> PHP -> Code Assist 打开里面的Enable auto activation选项,下面有个…

linux卸载minicoda2,MiniConda2下载 MiniConda python 2.7 v4.3.30.2 Linux 64位 官方免费版(附安装步骤) 下载-脚本之家...

MiniConda python 2.7 Linux版是一款可以在Linux系统下使用的Python 环境管理工具,同时MiniConda是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换,本次为大家提供的是Linux…

使用 python 操作 redis

1.安装pyredis (1)使用 # easy_install redis (2)直接编译安装 #wget https://pypi.python.org/packages/source/r/redis/redis-2.9.1.tar.gz #tar xvzf redis-2.9.1.tar.gz #cd redis-2.9.1 #python setup.py install 2.简单的re…

android-XML解析Dom,Sax,Pull

android平台上解析xml的常见的工具有三种:dom,sax,pull。 第一种是DOM, 它的特点是一次全部加载,如果对于数据量小的情况下,它的效率还可以,如果XML文件很大的情况下,速度就会慢起来。 第二种方…

射击的乐趣:WIN32诠释打飞机游戏

一楼留给链接http://blog.csdn.net/crocodile__/article/details/11860129 楼上神贴,膜拜片刻...... 一、游戏玩法和已经实现的功能 1.打开游戏会有提示是否开始游戏。 2.键盘↑↓←→控制保卫者飞机(米格21原型,米格粉们千万不要看这架飞机&…

内容营销11金规

内容营销11金规 现在也许是解释和讲述一个很重要观点的好时机:创造给力的内容十分关键,但还不够。你还必须提出满足大量其他目标的材料,而这些材料,符合给力的内容的惯例,或者(你知道我们马上谈论这一点&am…

eclipse3.4 SVN插件安装

2019独角兽企业重金招聘Python工程师标准>>> SVN插件: http://subclipse.tigris.org/update_1.6.x 汉化版,现在我这边eclipse3.4是可用的。 转载于:https://my.oschina.net/dreamnight/blog/695060

连接两个linux系统软件,【技术共享】synergy-两台电脑共享一套鼠标键盘-Linuxwindows...

PS:这软件倒是不错,可是这要求两台电脑显示器都可以看到.当然一般我们是用不到的.再加上是局域网,直接用远程桌面连接或者控制软件也可以的.前些天,我把自己的台式电脑搬到实验室,与实验室里分配给我的电脑一起用。为了方便使用,我尝试了下用…

容错性设计

即便你的产品90%的时间都运行良好。但是如果在用户需要帮助时置之不理,他们是不会忘记这一点的。——《getting real》 我们有时候不能不面对产品出错的时候。无论设计得多么用心,无论做了多少测试,用户仍然会遇到错误和问题。既然…

Spring Data 系列(二) Spring+JPA入门(集成Hibernate)

通过【Spring Data 系列(一) 入门】的介绍,通过对比的方式认识到Spring提供的JdbcTemplate的强大功能。通过使用JdbcTemplate,操作数据库,不需要手动处理Connection,Statement等底层SQL对象。可是,Spring对数据库的操作还远远没有…

emmet-vim

最近啊,我投奔了网页的开发,看了一本《head first HTML and CSS》的书,感觉非常不错,然后又配置了一些vim里面用到的插件,现在我把学习到的东西记录下来! 首先,我不会在这里写emmet 的具体操作方…

百度epoll

epoll编辑epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。目 录 1简介 2优点 2.1 支持一个进程打开大数目的socket描述符2.2 …