kylin 大数据_大数据kylin - CSDN
  • 文章目录前期准备包下载按顺序安装一.Hadoop二. Zookeeper 前期准备 /etc/sudoers配置管理用户root权限 关闭防火墙 /etc/hosts 配置ip与主机名 ...安装ntp,同步集群机器时间(或者跑个shell脚本,同步为master时间) ...

    PS:将鼠标悬浮于对应图片上查看配置文件路径,全文同

    前期准备

    1. /etc/sudoers配置管理用户root权限
    2. 关闭防火墙
    3. /etc/hosts 配置ip与主机名
    4. 将其余节点的公钥拷贝到仓库文件并授权,scp分发到各节点,配置各节点直接ssh免密登陆
    5. 安装ntp,同步集群机器时间(或者跑个shell脚本,同步为master时间)
    6. 下载jdk包并在/etc/profile中配置JAVA变量(本次用的为jdk 1.8.0),设置完后记得source profile

    包下载

           下载zookeeper 3.4.12, sqoop 1.4.5,kylin 2.0,Hbase 1.2.7, hive 2.3.4,hadoop 2.7.6,spark 2.1.1(以上版本可搭配使用)

    按顺序安装

    一.Hadoop

    1. 解压

    2. 修改配置文件
      修改conf下core-site.xml
      修改conf下hdfs-site.xml

      修改conf下yarn-site.xml
      修改conf下mapred-site.xml

    3. 编辑slaves,添加datanode结点

    4. 分发到各节点并配置环境变量

    二.Zookeeper

    1. 解压、配置环境变量
    2. 修改配置文件
      修改conf/zoo.cfg
    3. 在$dataDir下新建myid文件,文件内容填写1,分发到其他节点时,需要将myid的文件内容更新为unique id,不重复即可
    4. bin/zkServer.sh start启动zookeeper

    三.Hbase

    1. 解压
    2. 编辑conf下habse-env.sh
      编辑conf下habse-env.sh
      编辑conf下hbase-site.xml
      将hadoop下的core-site.xml、hdfs-site.xml复制到hbase配置目录下。
      编辑conf/regionservers
    3. 配置环境变量

    四.Hive

    1. 解压
    2. cp hive-default.xml.template hive-site.xml并编辑,插入
      编辑hive-site.xml
    3. 复制mysql-connector-java-5.1.18-bin.jar到hive/lib
    4. 配置环境变量
    • 在hive/bin 下执行schematool -dbType mysql -initSchema
    • 输入Hive启动

    五.Sqoop

    1. 解压
    2. 编辑conf/sqoop-env.sh
    3. 移动 mysql-connector-java-5.1.30-bin.jar 到 /usr/lib/sqoop/lib 目录
    4. 配置环境变量

    六.Kylin

    1. 解压
    2. 配置环境变量
    • /bin/kylin.sh start直接启动kylin
    • 访问: http://ip:7070/kylin
    • 需要在web进行查询需要在hadoop下修改mpred-site.xml再启动命令mr-jobhistory-daemon.sh start historyserver

    七.Spark

    1. 解压

    2. 配置环境变量

      /conf 配置spark-env.sh
      /conf 配置slaves

    3. Scp将spark分发至其余节点

    4. 启动HDFS之后,/sbin/start-all.sh启动

    Kylin查询案例

    curl -X POST --user ADMIN:KYLIN -H “Content-Type: application/json” -d ‘{ “sql”:“select TEST.DISEASE from TEST”, “project”:“test” }’ http://ip:7070/kylin/api/query

    启动模式

    启动顺序为 zookeeper(每一台)->Hadoop(主节点)->Hbase(主节点)->sqoop 1.4.5 -> hive(主节点)->kylin(主节点)->spark 2.1.1

    展开全文
  • Kylin简介 Apache Kylin™是唯一来自中国的Apache的顶级开源项目,是一个分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,能够处理TB乃至PB级别的分析任务。简单来说,Kylin...

    Kylin简介

    Apache Kylin™是唯一来自中国的Apache的顶级开源项目,是一个分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,能够处理TB乃至PB级别的分析任务。简单来说,Kylin的核心思想是预计算(以空间换时间),即从Hive中读取源数据使用MapReduce/Spark作为Cube构建引擎进行预计算,将计算好的结果保存到Hbase中,供查询时直接访问,这决定了Kylin能够拥有很好的快速查询和高并发能力。

    特性

    • Hadoop ANSI SQL 接口:
      Kylin为Hadoop提供标准SQL支持大部分查询功能

    • 交互式查询能力:
      通过Kylin,用户可以与Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能

    • 多维立方体(MOLAP Cube):
      用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体

    • 与BI工具无缝整合:
      Kylin提供与BI工具的整合能力,如Tableau,PowerBI/Excel,MSTR,QlikSense,Hue和SuperSet

    • 其他特性:
      Job管理与监控、压缩与编码 、增量更新、利用HBase Coprocessor、友好的web界面以管理,监控和使用Cube、项目及表级别的访问控制安全

    架构

    根据上图可以看出

    • Kylin对外提供全是SQL形式的rest查询接口
    • SQL解析为对应的HBase API对已经提前计算好并存在HBase中的数据结果进行查询
    • 对没有提前计算的数据会路由到Hadoop/Hive中进行离线数据查询
    • 支持kafka的实时数据增量构建cube

    Kylin场景分析

    Kylin属于OLAP类型的加工查询引擎,实时增量构建目前还不普及。目前OLAP引擎有如下几种:

    1. 基于MPP(大规模并行处理)类引擎
    • 代表:Impala/Presto
    • 特点:基于Hive/Kudu直接读取数据,通过分布式/内存加速计算。
    • 劣势:在超大数据量级以及复杂业务场景延迟较高,高压情况下某个节点挂掉可能导致剩余节点负载过大而产生问题。
    • 场景:在灵活性较高、数据量及业务适场景下,准实时查询。
    1. 基于Lucene类引擎
    • 代表:Elasticsearch/Solr
    • 特点:相比其他可以较简单的部署使用,通过索引加速计算。
    • 劣势:不支持标准SQL、不支持关联、没有细致的权限管理。
    • 场景:适用于搜索引擎,归档数据检索,准实时的数据写入检索。
    1. 基于预计算类引擎
    • 代表:Kylin/Druid
    • 特点:对各类维度计算优化,提前聚合明细数据,将结果保存提供查询。
    • 劣势:数据膨胀占用更多的空间、与Mysql语法有一定差异,支持的函数少。
    • 场景:适用于对查询时效性要求高的,离线大数据量的多维分析。

    根据不同的应用场景选择更加合适的OLAP引擎是我们选型中最需要考量的点,大家再实践中务必根据各方面情况综合考虑进行最终的技术确定。

    场景

    在这里插入图片描述
    如上图,假设需要统计公司各个部门各类白酒的每个销售人员的销量按时间做趋势的话,如果写HiveSQL我们需要写几个加工语句,然后讲加工完的结果数据再推送到应用的关系数据库或者ES中供查询,但使用Kylin步骤就简单的多。

    操作步骤

    在这里插入图片描述

    • Model描述了一个星型模式的数据结构,它定义了一个事实表(Fact Table)和多个查找表(Lookup Table)的连接和过滤关系
    • Cube描述一个Cube实例的定义和配置选项,包括使用了哪个数据模型、包含哪些维度和度量、如何将数据进行分区、如何处理自动合并等等
    • 通过Build Cube得到,包含一个或者多个Cube Segment
    • 支持标准的SQL查询

    可以简单理解为下图逻辑:
    在这里插入图片描述

    Cube简介和优化

    在这里插入图片描述
    Cube是Kylin的核心概念,如上图所示,一个常用的3维立方体,包含:时间、地点、产品。假如data cell 中存放的是销量,则我们可以根据时间、地点、产品来确定销量,同时也可以根据时间、地点来确定所有产品的总销量等。Kylin就将所有(时间、地点、产品)的各种组合实现算出来,data cell 中存放度量,其中每一种组合都称为cuboid。估n维的数据最多有2^n个cuboid,不过Kylin通过设定维度的种类,可以减少cuboid的数目。

    Cube优化

    随着维度数目的增加 Cuboid 的数量会爆炸式地增长,不仅占用大量的存储空间还会延长 Cube 的构建时间。为了缓解 Cube 的构建压力,减少生成的 Cuboid 数目,Apache Kylin 引入了一系列的高级设置,帮助用户筛选出真正需要的 Cuboid。主要设置有强制维度、层级维度、聚合组、联合维度等,如果不做优化一个四维的Cube构建出来是如下图这样的:

    在这里插入图片描述

    联合维

    如果假设我们只需要ABC和D两种维度的结果我们可以使用联合维做优化,优化结果如下图,他将只构建两种结果:
    在这里插入图片描述
    用户有时并不关心维度之间各种细节的组合方式,例如用户的查询语句中仅仅会出现 group by A, B, C,而不会出现 group by A, B 或者 group by C 等等这些细化的维度组合。这一类问题就是联合维度所解决的问题。例如将维度 A、B 和 C 定义为联合维度,Apache Kylin 就仅仅会构建 Cuboid ABC,而 Cuboid AB、BC、A 等等Cuboid 都不会被生成。最终的 Cube 结果如图所示,Cuboid 数目从 16 减少到 4。

    聚合组

    用户关心的聚合组之间可能包含相同的维度,例如聚合组 ABC 和聚合组 BCD 都包含维度 B 和维度 C。这些聚合组之间会衍生出相同的 Cuboid,例如聚合组 ABC 会产生 Cuboid BC,聚合组 BCD 也会产生 Cuboid BC。这些 Cuboid不会被重复生成,一份 Cuboid 为这些聚合组所共有,如下图:
    在这里插入图片描述

    对于强制维和层次维比较好理解本文不再赘述,相关资料会在文末提供。

    Kylin实践

    京东库存健康系统

    以京东自营订单、库存、流量等数据,结合可配置的指标口径,对40多个指标十多个维度每天一亿多的数据增量加工,包括存货周转、现货率、PV、滞销、不动销、长库龄等,并从不同维度对这些指标的健康情况进行展示,为所有采销人员优化库存结构提供决策支持,同时提供明细数据的查询下载。设计如图:
    在这里插入图片描述

    该系统开发只需要简单配置mybatis,就可以在项目中使用简单SQL来查询几十个维度提前计算好的结果数据,毫秒级展现给用户。配置文件如下:
    在这里插入图片描述
    使用Kylin全过程都是界面化操作,只需要设置好维度字段、汇总字段以及Cube构建的优化方式和参数即可定期来增量构建Cube数据。操作界面如下:
    在这里插入图片描述

    系统展示

    在这里插入图片描述
    在这里插入图片描述

    参考资料

    展开全文
  • kylin大数据多维分析

    2020-07-27 23:33:57
    Apache Kylin,中文名麒(shen)麟(shou) 是Hadoop动物园的重要成员。 Apache Kylin是一个开源的分布式分析引擎,最初由eBay开发贡献至开源社区。 简而言之,Kylin的核心思想是计算在多维分析中可能使用的测量值的...
  • 本文作者:李栋,来自Kyligence公司,也是Apache Kylin Committer & PMC member,在加入Kyligence之前曾就职于eBay、微软。 1.Apache Kylin是什么?   在现在的大数据时代,越来越多的企业开始使用Hadoop管理...

    本文作者:李栋,来自Kyligence公司,也是Apache Kylin Committer & PMC member,在加入Kyligence之前曾就职于eBay、微软。

    1.Apache Kylin是什么?


     

    kylin

    在现在的大数据时代,越来越多的企业开始使用Hadoop管理数据,但是现有的业务分析工具(如Tableau,Microstrategy等)往往存在很大的局限,如难以水平扩展、无法处理超大规模数据、缺少对Hadoop的支持;而利用Hadoop做数据分析依然存在诸多障碍,例如大多数分析师只习惯使用SQL,Hadoop难以实现快速交互式查询等等。神兽Apache Kylin就是为了解决这些问题而设计的。

    Apache Kylin,中文名麒(shen)麟(shou) 是Hadoop动物园的重要成员。Apache Kylin是一个开源的分布式分析引擎,最初由eBay开发贡献至开源社区。它提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持大规模数据,能够处理TB乃至PB级别的分析任务,能够在亚秒级查询巨大的Hive表,并支持高并发。

    Apache Kylin于2014年10月在github开源,并很快在2014年11月加入Apache孵化器,于2015年11月正式毕业成为Apache顶级项目,也成为首个完全由中国团队设计开发的Apache顶级项目。于2016年3月,Apache Kylin核心开发成员创建了Kyligence公司,力求更好地推动项目和社区的快速发展。

    kylin

    2.Kylin的基本原理和架构


    下面开始聊一聊Kylin的基本原理和架构。简单来说,Kylin的核心思想是预计算,即对多维分析可能用到的度量进行预计算,将计算好的结果保存成 Cube,供查询时直接访问。把高复杂度的聚合运算、多表连接等操作转换成对预计算结果的查询,这决定了Kylin能够拥有很好的快速查询和高并发能力。

    kylin

    上图所示就是一个Cube的例子,假设我们有4个dimension,这个Cube中每个节点(称作Cuboid)都是这4个dimension的不同组合,每个组合定义了一组分析的dimension(如group by),measure的聚合结果就保存在这每个Cuboid上。查询时根据SQL找到对应的Cuboid,读取measure的值,即可返回。

    为了更好的适应大数据环境,Kylin从数据仓库中最常用的Hive中读取源数据,使用 MapReduce作为Cube构建的引擎,并把预计算结果保存在HBase中,对外暴露Rest API/JDBC/ODBC的查询接口。因为Kylin支持标准的ANSI SQL,所以可以和常用分析工具(如Tableau、Excel等)进行无缝对接。下面是Kylin的架构图。

    kylin

    说到Cube的构建,Kylin提供了一个称作Layer Cubing的算法。简单来说,就是按照dimension数量从大到小的顺序,从Base Cuboid开始,依次基于上一层Cuboid的结果进行再聚合。每一层的计算都是一个单独的Map Reduce任务。如下图所示。

    kylin

    MapReduce的计算结果最终保存到HBase中,HBase中每行记录的Rowkey由dimension组成,measure会保存在 column family中。为了减小存储代价,这里会对dimension和measure进行编码。查询阶段,利用HBase列存储的特性就可以保证Kylin有 良好的快速响应和高并发。

    kylin

    有了这些预计算的结果,当收到用户的SQL请求,Kylin会对SQL做查询计划,并把本该进行的Join、Sum、Count Distinct等操作改写成Cube的查询操作。

    kylin

    Kylin提供了一个原生的Web界面,在这里,用户可以方便的创建和设置Cube、管控Cube构建进度,并提供SQL查询和基本的结果可视化。

    kylin

    根据公开数据显示,Kylin的查询性能不只是针对个别SQL,而是对上万种SQL 的平均表现,生产环境下90%ile查询能够在在3s内返回。在上个月举办的Apache Kylin Meetup中,来自美团、京东、百度等互联网公司分享了他们的使用情况。例如,在京东云海的案例中,单个Cube最大有8个维度,最大数据条数4亿,最大存储空间800G,30个Cube共占存储空间4T左右。查询性能上,当QPS在50左右,所有查询平均在200ms以内,当QPS在200左右,平均响应时间在1s以内。

    kylin

    北京移动也在meetup上展示了Kylin在电信运营商的应用案例,从数据上看,Kylin能够在比Hive/SparkSQL在更弱的硬件配置下获得更好的查询性能。

    kylin

    目前,有越来越多的国内外公司将Kylin作为大数据生产环境中的重要组件,如ebay、银联、百度、中国移动等。大家如果想了解更多社区的案例和动态,可以登录Apache Kylin官网或Kyligence博客进行查看。

    kylin

    3.Kylin的最新特性


    Kylin的最新版本1.5.x引入了不少让人期待的新功能,可扩展架构将Kylin的三大依赖(数据源、Cube引擎、存储引擎)彻底解耦。Kylin将不再直接依赖于Hadoop/HBase/Hive,而是把Kylin作为一个可扩展的平台暴露抽象接口,具体的实现以插件的方式指定所用的数据源、引擎和存储。

    kylin

    开发者和用户可以通过定制开发,将Kylin接入除Hadoop/HBase/Hive以外的大数据系统,比如用Kafka代替Hive作数据源,用 Spark代替MapReduce做计算引擎,用Cassandra代替HBase做存储,都将变得更为简单。这也保证了Kylin可以随平台技术一起演 进,紧跟技术潮流。

    kylin

    在Kylin 1.5.x中还对HBase存储结构进行了调整,将大的Cuboid分片存储,将线性扫描改良为并行扫描。基于上万查询进行了测试对比结果显示,分片的存 储结构能够极大提速原本较慢的查询5-10倍,但对原本较快的查询提速不明显,综合起来平均提速为2倍左右。

    kylin

    除此之外,1.5.x还引入了Fast cubing算法,利用Mapper端计算先完成大部分聚合,再将聚合后的结果交给Reducer,从而降低对网络瓶颈的压力。对500多个Cube任务 的实验显示,引入Fast cubing后,总体的Cube构建任务提速1.5倍。

    kylin

    目前,社区正在着手准备Apache Kylin 1.5.2版本的发布,目前正处于Apache Mailing list投票阶段,预计将会在本周在Kylin官网发布正式下载。

    在本次的1.5.2版本中,Kylin带来了总计 36个缺陷修复、33个功能改进、6个新功能。一些主要的功能改进包括对HyperLogLog计算效率的提升、在Cube构建时对Convert data to hfile步骤的提速、UI上对功能提示的体验优化、支持hive view作为lookup表等等。

    另一个新消息是Kylin将支持MapR和CDH的Hadoop发行版,具体信息可见KYLIN-1515和KYLIN-1672。相应的测试版本是MapR5.1和CDH5.7。

    UI上提供了一个重要更新,即允许用户在Cube级别进行自定义配置,以覆盖kylin.properties中的全局配置。如在cube中定义kylin.hbase.region.count.max可以设置该cube在hbase中region切分的最大数量。

    kylin

    另一个重要的功能是Diagnosis。用户经常会遇到一些棘手的问题,例如Cube构建任务失败、SQL查询失败,或Cube构建时间过长、SQL查询时间过长等。但由于运维人员对Kylin系统了解不深,很难快速定位到root cause所在地。我们在mailing list里也经常看到很多用户求助,由于不能提供足够充分的信息,社区也很难给出一针见血的建议。

    当用户遇到查询、Cube/Model管理的问题,单击System页面的Diagnosis按钮,系统会自动抓取当前Project相关的信息并打包成zip文件下载到用户本地。这个包会包含相关的Metadata、日志、HBase配置等。当用户需要在mailing list求助,也可以附上这个包。

    kylin

    一个cube构建任务执行失败或时间过长,用户可以单击Job下的Diagnosis按钮。同样的,系统会抓取和下载Job相关信息成一个zip包。

    kylin

    Q&A


    Q1、对mdx支持情况如何?

    A1:我们现在不支持MDX查询,查询入口是SQL,像saiku这种基于MDX的操作,社区已经有人贡献了Mondrian jar包,可以将saiku 前台提供的mdx转换为sql,再通过jdbc jar发送到Kylin server,不过功能上有所限制,left join, topN, count distinct支持受限。

    Q2、麒麟针对出来T级别的数据,每日制作cube大约话费多久时间?

    A2:具体cube构建时间视不同情况而定,具体取决于dimension数量及不同组合情况、Cardinality大小、源数据大小、Cube优化程度、集群计算能力等因素。在一些案例中,在一个shared cluster构建数十GB的数据只需要几十分钟。建议大家在实际环境先进行测试,寻找可以对Cube进行优化的点。此外,一般来说,Cube的增量构建可以在ETL完成后由系统自动触发,往往这个时间和分析师做数据分析是错峰的。

    Q3、如何向kylin提交代码?

    A3:将修改的代码用git format-patch做成patch文件,然后attache在对应的jira上,kylin committer会来review,没有问题的话会merge到开发分支

    Q4、如果数据是在elastic search,Kylin的支持如何?

    A4:目前还不支持直接从es抽取数据,需要先导出到hive再做cube build;有兴趣的同学可以基于kylin 1.5的plugin架构实现一个es的data source。

    Q5、工作的比较好的前端拖拽控件有什么?

    A5:目前应该是tableau支持较好,saiku支持不是很好,有些场景如left join, count distinct,topN支持不是很好,用户是可以基于Api开发自己的拖拽页面的。

    Q6、社区版和商业版功能上有什么区别?

    A6:商业版能够提供更高的安全性、稳定性、可靠性,以及企业组件的良好集成;以及可靠、专业、源码级的商业化支持。

    Q7、对多并发支持表现如何?

    A7:Kylin和其他MPP架构技术想必一大优势就在高并发。一台Kylin的Query Server就支持几十到上百的QPS (取决于查询的复杂度,机器的配置等因素),而且 Kylin支持良性的水平扩展,即增多kylin server和HBase节点就可迅速增大并发。

    Q8、kylin可以整合spark machine learning和spark sql吗?

    A8:基于前面讲到的可插拔架构,是可以整合的。

    Q9、跟其它工具对比,有没有考虑cube的构建时间?因为人家是实时计算的,你是预计算的,这从机理上是不一样的

    A9:kylin跟其它mpp架构的技术在查询性能的对比,时间里是不含cube构建的时间的,所以从某种意义上来讲这样的对比是有些不公平。但是,从用户角度来看,分析师和最终用户只关心查询性能,而Kylin用预计算能大大提高查询速度,这正是用户所需要的!

    Q10、Kylin ODBC 驱动程序有示例代码?

    A10:目前代码在master分支,欢迎大家加入社区一起贡献。

    Q11、4亿数据有点少,麒麟有没有做过相关的benchmark ,在百亿级别数据,十个纬度的情况下,表现如何?

    A11:来自社区的测试数据,在一个近280亿条原始数据的cube(26TB)上,90%的查询在5秒内完成。

    Q12、数据量翻倍的话,空间使用会做指数级增长么

    A12:通常cube的增长与原数据的增长基本一致,即原数据翻倍,cube也翻倍,或者更小一些;而非指数增长。

    Q13、Data Model和Cube Model构建过程能根据UI步骤详细讲下吗?

    A13:欢迎登陆Kylin网站,查询具体的使用教程。http://kylin.apache.org/

    Q14、你好,相关链接能贴一下吗,谢谢! 来自社区的测试数据,在一个近280亿条原始数据的cube(26TB)上,90%的查询在5秒内完成。

    A14:http://www.docin.com/p-1497646649.html


    转自:lxw的大数据田地 » 大数据分析界的“神兽”Apache Kylin有多牛?

    展开全文
  • Kylin大数据分析

    2019-04-20 20:16:40
    Apache Kylin(Extreme OLAP Engine for Big Data)是一个开源的分布式分析引擎,为Hadoop等大型分布式数据平台之上的超大规模数据集通过标准SQL查询及多维分析(OLAP)功能,提供亚秒级的交互式分析能力。...

    1.概述

    1.1 Kylin是什么

        Apache Kylin(Extreme OLAP Engine for Big Data)是一个开源的分布式分析引擎,为Hadoop等大型分布式数据平台之上的超大规模数据集通过标准SQL查询及多维分析(OLAP)功能,提供亚秒级的交互式分析能力。
    

    1.2 Kylin的由来

        Apache Kylin,中文名麒麟,是Hadoop动物园的重要成员。Apache Kylin是一个开源的分布式分析引擎,最初由eBay开发贡献至开源社区。它提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持大规模数据,能够处理TB乃至PB级别的分析任务,能够在亚秒级查询巨大的Hive表,并支持高并发。
        Apache Kylin于2014年10月在github开源,并很快在2014年11月加入Apache孵化器,于2015年11月正式毕业成为Apache顶级项目,也成为首个完全由中国团队设计开发的Apache顶级项目。于2016年3月,Apache Kylin核心开发成员创建了Kyligence公司,力求更好地推动项目和社区的快速发展。
    

    1.3 为什么需要Kylin

        在大数据的背景下,Hadoop的出现解决了数据存储问题,但如何对海量数据进行OLAP查询,却一直令人十分头疼。
    企业中大数据查询大致分为两种:即席查询和定制查询。
    ① 即席查询
        Hive、SparkSQL等OLAP引擎,虽然在很大程度上降低了数据分析的难度,但它们都只适用于即席查询的场景。它们的优点是查询灵活,但是随着数据量和计算复杂度的增长,响应时间不能得到保证。
    ② 定制查询
        多数情况下是对用户的操作做出实时反应,Hive等查询引擎很难满足实时查询,一般只能对数据仓库中的数据进行提前计算,然后将结果存入Mysql等关系型数据库,最后提供给用户进行查询。
    
        在上述背景下,Apache Kylin应运而生。不同于"大规模并行处理"Hive等架构,Apache Kylin采用"预计算"的模式,用户只需要提前定义好查询维度,Kylin将帮助我们进行计算,并将结果存储到HBase中,为海量数据的查询和分析提供亚秒级返回,是一种典型的"空间换时间"的解决方案。Apache Kylin的出现不仅很好地解决了海量数据快速查询的问题,也避免了手动开发和维护提前计算程序带来的一系列麻烦。
    

    2.核心概念

    2.1 数据仓库

        Data Warehouse,简称DW,中文名数据仓库,是商业智能(BI)中的核心部分。主要是将不同数据源的数据整合到一起,通过多维分析等方式为企业提供决策支持和报表生成。
    
    数据仓库与数据库主要区别:用途不同
    ①、数据库面向事务,而数据仓库面向分析。
    ②、数据库一般存储在线的业务数据,需要对上层业务的改变做出实时反应,涉及到增删查改等操作,所以需要遵循三大范式,需要ACID。而数据仓库中存储的则主要是历史数据,主要目的是为企业决策提供支持,所以可能存在大量数据冗余,但利于多个维度查询,为决策者提供更多观察视角。
        在传统BI领域中,数据仓库的数据同样存储在Oracle、MySQL等数据库中,而在大数据领域中最常用的数据仓库就是Apache Hive,Hive也是Apache Kylin默认的数据源。
    

    2.2 OLAP与OLTP

        OLAP(Online Analytical Process),联机分析处理,以多维度的方式分析数据,一般带有主观的查询需求,多应用在数据仓库。
        OLTP(Online Transaction Process),联机事务处理,侧重于数据库的增删查改等常用业务操作。
    

    2.3 维度和度量

    维度和度量是数据分析领域中两个常用的概念。
    简单地说,维度就是观察数据的角度。比如气象站的采集数据,可以从时间的维度来观察:
    表格.jpg

    也可以从时间和气象站两个角度来观察:
    1555654839(1).png

    维度一般是离散的值,比如时间维度上的每一个独立的日期,或者气象站维度上的每一个独立的气象站ID。因此统计时可以把维度相同的记录聚合在一起,然后应用聚合函数做累加、均值、最大值、最小值等聚合计算。
    度量就是被聚合的统计值,也就是聚合运算的结果,它一般是连续的值,如以上两个图中的温度值,或是其他测量点,比如风速、湿度、降雨量等等。通过对度量的比较和分析,我们就可以对数据做出评估,比如今年平均气温是否在正常范围,某个气象站的平均气温是否明显高于往年平均气温等等。

    2.4 Cube和Cuboid

    确定好了维度和度量之后,然后根据定义好的维度和度量,我们就可以构建Cube。对于一个给定的数据模型,我们可以对其上的所有维度进行组合。对于N个维度来说,组合所有可能性共有2的N次方种。对于每一种维度的组合,将度量做聚合计算,然后将运算的结果保存为一个物化视图,称为Cuboid。所有维度组合的Cuboid作为一个整体,被称为Cube。
    

    1555655083(1).jpg

    假设有一个电商的销售数据集,其中维度包括时间(Time)、商品(Item)、地点(Location)和供应
    商(Supplier),度量为销售额(GMV)。那么所有维度的组合就有2的4次方,即16种。
     一维度(1D)的组合:有[Time]、[Item]、[Location]、[Supplier]4种。
     二维度(2D)的组合:有[Time Item]、[Time Location]、[Time Supplier]、[Item Location]、[Item Supplier]、[Location Supplier]6种。
     三维度(3D)的组合:有[Time Item Location][Item Location Supplier][Time Location Supplier][Time Item Supplier]4种。
     最后零维度(0D)和四维度(4D)的组合各有[]和[Time Item Location Supplier]1种。计算Cubiod,即按维度来聚合销售额。如果用SQL语句来表达计算Cuboid [Time, Item],那么SQL语句为:select Time, Item, Sum(GMV) as GMV from Sales group by Time, Item将计算的结果保存为物化视图,所有Cuboid物化视图的总称就是Cube。
    

    2.5 事实表和维度表

    事实表(Fact Table)是指存储有事实记录的表,如系统日志、销售记录、用户访问记录等。事实表的记录是动态增长的,所以它的体积通常远大于维度表。
    维度表(Dimension Table)或维表,也称为查找表(Lookup Table),是与事实表相对应的一种表。它保存了维度的属性值,可以跟事实表做关联;相当于将事实表上经常重复的属性抽取、规范出来用一张表进行管理。常见的维度表有:日期表(存储与日期对应的周、月、季度等属性)、地区表(包含国家、省/州、城市等属性)等。维度表的变化通常不会太大。
    使用维度表有许多好处:
    ①、缩小了事实表的大小。
    ②、便于维度的管理和维护,增加、删除和修改维度的属性,不必对事实表的大量记录进行改动。
    ③、 维度表可以为多个事实表重用。

    2.6 星形模型

    维度建模通常又分为星型模型、雪花模型
    星形模型(Star Schema)是数据挖掘中常用的几种多维数据模型之一。它的特点是只有一张事实表,以及零到多个维度表,事实表与维度表通过主外键相关联,维度表之间没有关联,就像许多小星星围绕在一颗恒星周围,所以名为星形模型。

    1555655396(1).png

    雪花模型(SnowFlake Schema),就是将星形模型中的某些维表抽取成更细粒度的维表,然后让维表之间也进行关联,这种形状酷似雪花的的模型称为雪花模型
    1555655496(1).png

    3.运行原理

    Kylin的核心思想是预计算,即对多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube,供查询时直接访问。把高复杂度的聚合运算、多表连接等操作转换成对预计算结果的查询,这决定了Kylin能够拥有很好的快速查询和高并发能力。

    3.1 技术架构

    Apache Kylin系统主要可以分为在线查询和离线构建两部分,具体架构图如下:

    1555655661(1).png

    Kylin提供了一个称作Layer Cubing的算法,来构建Cube。简单来说,就是按照dimension数量从大到小的顺序,从Base Cuboid开始,依次基于上一层Cuboid的结果进行再聚合。每一层的计算都是一个单独的Map Reduce(Spark)任务。
    MapReduce的计算结果最终保存到HBase中,HBase中每行记录的Rowkey由dimension组成,
    measure会保存在column family中。为了减小存储代价,这里会对dimension和measure进行编码。查询阶段,利用HBase列存储的特性就可以保证Kylin有良好的快速响应和高并发。

    3.2 特性

    SQL接口

     Kylin主要的对外接口就是以SQL的形式提供的。SQL简单易用的特性极大地降低了Kylin的学习成本,不论是数据分析师还是Web开发程序员都能从中收益。
    

    支持海量数据集

     不论是Hive、SparkSQL,还是Impala,它们的查询时间都随着数据量的增长而线性增长。而Apache Kylin使用预计算技术打破了这一点。Kylin在数据集规模上的局限性主要取决于维度的个数和基数,而不是数据集的大小,所以Kylin能更好地支持海量数据集的查询。
    

    亚秒级响应

     受益于预计算技术,Kylin的查询速度非常快,因为复杂的连接、聚合等操作都在Cube的构建过程中已经完成了。    
    

    水平扩展

    Apache Kylin同样可以使用集群部署方式进行水平扩展。但部署多个节点只能提高Kylin处理查询的能力,而不能提升它的预计算能力。
    

    可视化集成

    Kylin提供与BI工具的整合能力,如Tableau,PowerBI/Excel,MSTR,QlikSense,Hue和SuperSet。
    

    构建多维立方体(Cube)

    用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体。
    

    4.Kylin服务器模式

    Kylin 实例是无状态的,其运行时状态存储在 HBase (由 conf/kylin.properties 中的 kylin.metadata.url 指定) 中的 metadata 中。出于负载均衡的考虑,建议运行多个Kylin 实例共享一个 metadata ,因此他们在表结构中共享同一个状态,比如job 状态, Cube 状态, 等等。
    每一个 Kylin 实例在 conf/kylin.properties 中都有一个 “kylin.server.mode” entry,指定了运行时的模式,有 3 个选项:

    job : 在实例中运行 job engine; Kylin job engine 管理集群 的 jobs。
    query : 只运行 query engine; Kylin query engine 接收和回应你的 SQL 查询。
    all : 在实例中既运行 job engine 也运行 query engines。
    

    注意默认情况下只有一个实例可以运行 job engine (“all” 或 “job” 模式), 其它需要是 “query” 模式

    5. 企业应用案例

    Apache Kylin虽然还很年轻,但已经在多个企业的生产项目中得到了应用。下面我们来看一看Kylin在国内两个著名企业内的应用。
    百度地图
    大数据计算分析的三大痛点:

    1.百亿级海量数据多维指标动态计算耗时问题,Apache Kylin通过预计算生成Cube结果数据集并存储到HBase的方式解决;
    2.复杂条件筛选问题,用户查询时,Apache Kylin利用router查找算法及优化的HBase Coprocessor解决;
    3.跨月、季度、年等大时间区间查询问题,对于预计算结果的存储,Apache Kylin利用Cube的Data Segment分区存储管理解决。
    

    这3个痛点的解决,使百度地图在百亿级大数据规模下,且数据模型确定的具体多维分析产品中,达到单条SQL毫秒级响应。

    展开全文
  • Apache Kylin在链家GAIA大数据平台中的实践更多干货分布式实战(干货)spring cloud 实战(干货)mybatis 实战(干货)spring boot 实战(干货)React 入门实战(干货)构建中小型互联网企业架构(干货)python 学习...
  • Kylin概述 1.1、 Kylin定义 Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP) 能力以支持超大规模数据,最初由eBay开发并贡献至开源社区。它能在亚秒内查询巨大的Hive...
  • Olap简介 OLAP的历史与基本概念 Olap全称为在线联机分析应用,是一种对于多维数据分析查询的解决方案。 典型的Olap应用场景包括销售、市场、管理等商务报表,预算决算,经济报表等等。 最早的Olap查询工具是发布...
  • Kylin大数据实战学习教程 大数据高级架构师,多年大数据项目架构及研发经验...
  • Apache Kylin大数据OLAP利器.pdf;Apache Kylin大数据OLAP利器.pdf
  • kylin大数据实战学习教程。cube构建,安装文档,资料,还有视频,基础篇,进阶篇,高级篇,实战详解。
  • 大数据OLAP目前主要有ROLAP和MOLAP。目前我们已采用的ROLAP方式组建数据平台,提供了更大的操作灵活性,同时在海量数据的情况下分析计算缓慢。MOLAP 能降低分析和数据库的耦合性,提高处理效率和改善分工,但降低...
  • 背景:B公司,前美纳斯上市公司,上...对多维数据查询较慢),已经满足不了当下需求,急需要一个能支持大规模数据查询,速度又快,使用零门槛的查询服务,几套方案选择后,最终选择了Kylin,主要看重的是它支持大规...
  • 本课程为专题课,通过全面讲解Kylin架构原理、分布式集群搭建以及项目案例,让你快速掌握Kylin实时大数据BI技术,从而解决海量数据多维指标动态计算耗时问题、复杂条件筛选问题以及跨月、季度、年等大时间区间查询...
  • https://blog.csdn.net/liuxinli/article/details/84345248
  • Kylin官网案例实操

    2018-11-28 11:40:03
    能够构建Kylin大数据BI平台 理解Kylin架构原理 能够利用Kylin构建Cube实现多维度实时查询
  • Apache Kylin 大数据时代的OLAP利器 January 4th, 2016hu weiLeave a commentGo to comments 1. OLAP简介   OLAP的历史与基本概念   OLAP全称为在线联机分析应用,是一种对于多维...
  • Kylin 大数据OLAP引擎 Kylin简介 Kylin的诞生背景: Kylin-中国团队研发的,是第一个真正由中国人自己主导、从零开始、自主研发、并成为Apache顶级开源项目 Hive的性能比较慢,支持SQL灵活查询,特别慢 HBase的性能...
  • Kylin 大数据OLAP引擎

    2020-05-13 21:55:53
    Kylin的诞生背景 Kylin-中国团队研发的,是第一个真正由中国人自己主导、从零开始、自主研发、并成为Apache顶级开源项目 Hive的性能比较慢,支持SQL灵活查询,特别慢 HBase的性能快,原生不支持SQL - phoenix:...
1 2 3 4 5 ... 20
收藏数 4,853
精华内容 1,941
关键字:

kylin 大数据