做视频网站要什么软件下载,o2o网站模版,重庆平台网站建设,上海的设计网站有哪些http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录#xff1a;使用Apache Kylin搭建企业级开源大数据分析平台。 正文如下 我先做一个简单介绍我叫史少锋#xff0c;我曾经在IBM、eBay做过大数据、云架构的…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之前版本中的的算法也叫逐层算法。它会启动N1轮MapReduce计算。 第一轮读取原始数据去掉不相关的列只保留相关的。同时对维度列进行压缩编码;以此处的四维Cube为例经过第一轮计算出ABCD组合我们也称为Base Cuboid; 此后的每一轮MapReduce输入是上一轮的输出以重用之前计算的结果去掉要聚合的维度算出新的Cuboid。以此往上直到最后算出所有的Cuboid。 Cube在Storage上是怎么存储的? 星形模型会先被拉成一张平表 Dimension的值拼接在一起后面接着是Metrics。为了标示这是哪几个维度的组合会在行的开始加上Cuboid ID。最后Cuboid ID dimensions会被用作RowkeyMetrics会作为Value放到Column中 。 查询的时候SQL语句被SQL解析器翻译成一个解释计划从这个计划可以准确知道用户要查哪些表它们是怎样join起来有哪些过滤条件等等。Kylin会用这个计划去匹配寻找合适的Cube。 如果有Cube命中这个计划会发送到存储引擎翻译成对存储(默认HBase)相应的Scan操作。Groupby和过滤条件的列用来找到Cuboid过滤条件会被转换成Scan的开始和结束值 以缩小Scan的范围; Scan的resultRowkey会被反向解码成各个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之上安装好了之后业务系统连入KylinKylin把压力分布到Hadoop上做计算和查询。 有四种典型的部署架构分别从简单到复杂。 第一种 Single instance的部署 通常一两天就可以完成。首先要有Hadoop版本在2.4或以上。加一台Hadoop客户机下载Kylin即可一键启动。 建模人员通过Kylin Web登录进行建模和cube的创建。业务分析系统或者工具发SQL到KylinKylin查询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国内有京东、运营、美团、中国移动(包括广东移动和北京移动)还有微软 。 以上是今天的分享谢谢大家。