入门大数据---Kylin是什么?
一.Kylin是什么?
Apache Kylin是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 上的SQL查询接口及多维度分析(OLAP)能力以支持超大规模的数据,最初由eBay开发并贡献至开源社区。它能在亚秒内查询巨大的表。
Apache Kylin 令使用者仅需三步,即可实现超大数据集上的亚秒级查询。
1.定义一个星形或雪花形数据模型
2.在定义的表上创建cube
3.使用标准的SQL通过ODBC,JDBC和Restful API即可在亚秒内查询到结果。
二.解决问题
任何技术的出现都不是偶然,往往都是应需求而生,Kylin也不例外。Kylin直接面对的问题,是针对大数据不同维度频繁查询问题,比如拉钩网,我们切换一个城市,它就要把当前城市的所有岗位显示出来,利用普通的Hive根本没法做到实时响应,所以就发明了Kylin。Kylin不仅仅提高了查询性能,而且大大降低了对硬件的要求。
三.OLTP与OLAP
数据处理可以大致分为两类:联机事务处理OLTP,联机分析处理OLAP。
3.1 OLTP
OLTP(On-Line Transaction Processing):联机事务处理,OLTP 是传统的关系型数据库的主要应用, 主要是基本的、日常的事务处理,例如银行交易。主要用于业务类系统,主要供基层人员使用,进行一线业务操作。OLTP 表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒执行的 Transaction 以及 Execute SQL的数量。在这样的系统中,单个数据库每秒处理的 Transaction 往往超过几百个,或者是几千个,Select 语句的执行量每秒几千甚至几万个。典型的 OLTP 系统有电子商务系统、银行、证券等,如美国 eBay 的业务数据库,就是很典型的 OLTP 数据库。
3.2 OLAP
OLAP(On-Line Analytical Processing):联机分析处理,OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。OLAP 数据分析的目标是探索并挖掘数据价值,作为企业高层进行决策的参考。OLAP 分析处理是一种共享多维信息的快速分析技术;OLAP 利用多维数据库技术使用户从不同角度观察数据;OLAP 用于支持复杂的分析操作,侧重于对管理人员的决策支持,可以满足分析人员快速、灵活地进行大数据量的复杂查询的要求,并且以一种直观、易懂的形式呈现查询结果,辅助决策。
3.2.1 OLAP基本概念:
变量:度量的具体的值。比如身高,体重的值。
维度:不同的角度,比如身高,收入,家庭成员。
事实:组合维度求得的值,也就是 维度+变量组合。
3.2.2 OLAP基本操作:
钻取(Drill-down ):在维的不同层次间的变化,从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,比如通过对第二季度的总销售数据进行钻取来查看第二季度 4、5、6 每个月的消费数据。
上卷(Roll-up ):钻取的逆操作,即从细粒度数据向高层的聚合,如将江苏省、上海市和浙江省的销售数据进行汇总来查看江浙沪地区的销售数据。
切片(Slice ):选择维中特定的值进行分析,比如只选择电子产品的销售数据,或者第二季度的数据。
切块(Dice ):选择维中特定区间的数据或者某批特定值进行分析,比如选择第一季度到第二季度的销售数据,或者是电子产品和日用品的销售数据。
旋转(Pivot ):即维的位置的互换,就像是二维表的行列转换,如图中通过旋转实现产品维和地域维的互换。
3.2.3 OLTP和OLAP的关系
OLTP主要是企业给用户用的产品,OLAP是分析用户的行为,帮助企业决策,调整方向。
四.Kylin实现原理
kylin 的核心思想是预计算,kylin 对多维分析可能用到的度量进行预计算,将高维复杂的聚合计算,多表连接等操作转换成预计算结果,将计算好的结果保存成 Cube,存储于 Hbase 中,供查询时直接访问。预计算过程需要很长时间,但是一旦结果计算出来,再次查询只是获取结果集合的过程,不需要额外再次浪费集群资源进行长时间查询,这种以空间换取时间的处理数据模式决定了 Kylin 拥有很好的快速查询、高并发能力。
Kylin 是一个 MOLAP(多维联机数据分析)系统,最常用的是将 Hive 中的数据进行预计算,利用 Hadoop 的 Mapreduce 或者 Spark 分布式计算框架来实现。Kylin 获取的数据表是星型数据结构的,目前建模时,只支持一张事实表,多张维度表,假设业务需求比较复杂,可以考虑在 Hive 中进行预处理生成一张宽表来处理。
对于 Hive 中的维度表和事实表,根据我们指定的维度列来构建 cube,cube 是所有维度的组合,任一维度的组合称为 cuboid,即:cube 中包含所有的 cubeid。理论上来说,一个 N 维的 cube,会有 2 的 N 次方种维度组合(cuboid)。举例:假设一个 cube 包含 time、country、city、location 四个维度,那么就有 16 中 cuboid 组合。通过计算框架的计算将 OLAP 分析的 cube 数据存储在 Hbase 中,方便后期实现多维数据集的交互式快速查询。
上图中是 Kylin 整体架构原理图,其中:
REST Server:提供 Restful 接口,可以通过此接口来创建、构建、刷新、合并Cube 等相关操作。同时也可以通过 Restful 接口实现 SQL 查询。
Query Engine:目前 Kylin 使用开源的 Calcite 框架来实现 SQL 解析,用户发出SQL 查询之后,可以通过 Query Engine 来将 SQL Query 语句转换成 SQL 语法树,也就是逻辑计划。
Routing:负责将解析 SQL 生成的执行计划转换成 cube 缓存的查询,cube 是通过预计算缓存在 Hbase 中,这部分查询时可以在秒级甚至是毫秒级完成,除此之外,还有一些操作需要使用原始数据(存储在 HDFS 上)通过 Hive 查询,这部分查询的延迟比较高。
Metadata:Kylin 中有大量的元数据信息,包括 cube 的定义、星型模型的定义、job 和执行 job 的输出信息、模型的维度信息等等。Kylin 的元数据存储在 Hbase 中,存储的格式是 Json 字符串。
Cube Build Engine:立方体构建模块是所有模块的基础,主要负责 Kylin 预计算中创建 cube,创建的过程是首先通过 Hive 读取原始数据,然后通过 MR 或者 Spark 计算生成 Htable,最后将数据加载到 Hbase 表中。
入门大数据---Kylin是什么?的更多相关文章
- 入门大数据---Kylin搭建与应用
由于Kylin官网已经是中文的了,而且写的很详细,这里就不再重述. 学习右转即可. 这里说个遇到的问题,当在Kylin使用SQL关键字时,要加上双引号,并且里面的内容要大写,这个和MySql有点区别需 ...
- 入门大数据---Flink学习总括
第一节 初识 Flink 在数据激增的时代,催生出了一批计算框架.最早期比较流行的有MapReduce,然后有Spark,直到现在越来越多的公司采用Flink处理.Flink相对前两个框架真正做到了高 ...
- 入门大数据---Spark_Streaming整合Flume
一.简介 Apache Flume 是一个分布式,高可用的数据收集系统,可以从不同的数据源收集数据,经过聚合后发送到分布式计算框架或者存储系统中.Spark Straming 提供了以下两种方式用于 ...
- 入门大数据---SparkSQL外部数据源
一.简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景. CSV JSON Parquet ORC JD ...
- 入门大数据---Hadoop是什么?
简单概括:Hadoop是由Apache组织使用Java语言开发的一款应对大数据存储和计算的分布式开源框架. Hadoop的起源 2003-2004年,Google公布了部分GFS和MapReduce思 ...
- 入门大数据---MapReduce-API操作
一.环境 Hadoop部署环境: Centos3.10.0-327.el7.x86_64 Hadoop2.6.5 Java1.8.0_221 代码运行环境: Windows 10 Hadoop 2.6 ...
- 入门大数据---Flume整合Kafka
一.背景 先说一下,为什么要使用 Flume + Kafka? 以实时流处理项目为例,由于采集的数据量可能存在峰值和峰谷,假设是一个电商项目,那么峰值通常出现在秒杀时,这时如果直接将 Flume 聚合 ...
- 入门大数据---安装ClouderaManager,CDH和Impala,Hue,oozie等服务
1.要求和支持的版本 (PS:我使用的环境,都用加粗标识了.) 1.1 支持的操作系统版本 操作系统 版本 RHEL/CentOS/OL with RHCK kernel 7.6, 7.5, 7.4, ...
- 大数据学习系列之Hadoop、Spark学习线路(想入门大数据的童鞋,强烈推荐!)
申明:本文出自:http://www.cnblogs.com/zlslch/p/5448857.html(该博客干货较多) 1 Java基础: 视频方面: 推荐<毕向东JAVA ...
随机推荐
- oeong.xyz
兴趣使然而搭的小破站:oeong.xyz
- 蒲公英 · JELLY技术周刊 Vol.09 StackOverflow - 2020 开发者年度报告
登高远眺 沧海拾遗,积跬步以至千里 基础技术 StackOverFlow 2020 年开发者报告 技术问答社区 StackOverFlow 的年度报告,本次报告统计了来自于全球各地共 65000 名开 ...
- java实现哈密顿回路问题
1 问题描述 什么是哈密顿回路? 引用自百度百科: 哈密顿图(哈密尔顿图)(英语:Hamiltonian path,或Traceable path)是一个无向图,由天文学家哈密顿提出,由指定的起点前往 ...
- java实现 洛谷 P1425 小鱼的游泳时间
题目描述 伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的. 这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按24小时制计算),它发现自 ...
- java实现控制台表格
画表格 在图形环境中很容易做出漂亮的表格.但在控制台环境中就比较困难了.有的时候可以用一些符号大略地模拟:(word文档中可能不整齐,拷贝到记事本中看) +-------+------+ |abc | ...
- Java实现第九届蓝桥杯倍数问题
倍数问题 题目描述 [题目描述] 众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数.但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼.现在小葱给了你 n 个数,希望你从这 n ...
- Java实现第八届蓝桥杯外星日历
外星日历 题目描述 某星系深处发现了文明遗迹. 他们的计数也是用十进制. 他们的文明也有日历.日历只有天数,没有年.月的概念. 有趣的是,他们也使用了类似"星期"的概念, 只不过他 ...
- Netty源码学习系列之4-ServerBootstrap的bind方法
前言 今天研究ServerBootstrap的bind方法,该方法可以说是netty的重中之重.核心中的核心.前两节的NioEventLoopGroup和ServerBootstrap的初始化就是为b ...
- iOS-Core Foundation框架到Foundation桥接的三种方式
温故知新.勤总结,才能生巧!这次总结一下 :Core Foundation框架到Foundation桥接的三种方式 Foundation提供OC的基础类(像NSObject).基本数据类型等. Cor ...
- 全面概述Gitee和GitHub生成/添加SSH公钥
前言 现如今将代码开源已经成为软件开发行业的一种趋势,而现在比较有名的代码托管平台有GItHub.Gitee.Gitlab等相关平台.而我们在使用代码托管平台最为常见的就是如何将自己本地的代码推送到远 ...