核心思想:预计算。

  对多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube,并存在HBase中,供查询时直接访问

  将高复杂度的聚合运算、多表连接……操作转换成对预计算结果的查询。决定了Kylin拥有很好的快速查询、高并发能力

  理论基础:空间换时间

Cuboid:Kylin中将维度任意组合成为一个Cuboid

Cube:Kylin中将所有维度组合成为一个Cube,即包含所有的Cubeid

  为了更好地使用Hadoop大数据环境,Kylin从通常用来做数据仓库的HIve中读取源数据,使用Mapreduce作为Cube构建的引擎,并将于计算结果保存在HBase中,对外暴露Restful API/JEBC/ODBC的查询接口。

  Kylin支持标准的ANSI SQL,所以可以和常用分析工具(Tableau、Excel)进行无缝对接

restful api:

  符合REST架构设计的API。

  RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用

  REST,即Representational State Transfer的缩写

  如果一个架构符合REST原则,就称它为RESTful架构

  什么是RESTful架构:

  (1)每一个URI代表一种资源;

  (2)客户端和服务器之间,传递这种资源的某种表现层;

  (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

JDBC

  (Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

  JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

ODBC

  开放数据库连接(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。

  这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

  开放数据库互连(ODBC)是Microsoft提出的数据库访问接口标准。

  开放数据库互连定义了访问数据库API的一个规范,这些API独立于不同厂商的DBMS,也独立于具体的编程语言(但是Microsoft的ODBC文档是用C语言描述的,许多实际的ODBC驱动程序也是用C语言写的。)

  ODBC规范后来被X/OPEN和ISO/IEC采纳,作为SQL标准的一部分,具体内容可以参考《ISO/IEC 9075-3:1995 (E) Call-Level Interface (SQL/CLI)》等相关的标准文件。

ANSI SQL

  “美国国家标准化组织(ANSI)”是一个核准多种行业标准的组织。

  SQL作为关系型数据库所使用的标准语言,最初是基于IBM的实现在1986年被批准的。

  1987年,“国际标准化组织(ISO)”把ANSI SQL作为国际标准。

体系架构:

  

  Kylin是一个MOLAP(多维在线联机分析处理)系统,将Hive中的数据进行预计算,利用Hadoop的Mapreduce分布式计算框架来实现

  Kylin获取的表是星型模型结构的。目前建模时,只支持一张事实表,多张维表。

  如果业务需求比较复杂,就要考虑在Hive中进行进一步处理。(比如生成一张大的宽表,或者采用View代替)

  HBase:Kylin中用来存储OLAP分析的Cube数据的地方,实现多维数据集的交互式查询

  

  

  

Cube构建

  Layer Cubing:按照dimension数量从大到小的顺序,从Base Cuboid开始,依次基于上一层Cubeid的结果进行再聚合。每一层的计算都是一个单独的MapReduce任务

    逐层算法,启动N+1轮MapReduce计算:

      第一轮,读取原始数据RawData,去掉不相关的列,只保留相关的列。同时对维度列进行压缩编码(此处,计算出ABCD组合,即base cuboid)

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

  

    1.5.x开始引入Fast(in-mem) cubing算法,利用Mapper端计算先完成大部分聚合,再将聚合后的结果交给Reducer,从而降低对网络瓶颈的压力。

    

    MapReduce的计算结果最终保存到HBase中,HBase中每行记录的Rowkey由dimention组成,measure会保存再Column family中。为了减少存储代价,会对dimension和measure进行编码。

Kylin的Sql查询

  Cube构建完成后,可以查询维度对应的度量值了。

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

  如果有Cube命中,这个计划会发送到存储引擎,翻译成对存储(默认HBase)相应的Scan操作

   group by、过滤条件的列,用来找到Cuboid,过滤条件会被转换成Scan的开始、结束值,以缩小Scan的范围

   Scan的result、Rowkey会被反向解码成各个dimension的值,Value会被解码成Metrics值,同时利用HBase列存储的特性,可以保证Kylin有良好的快速响应、高并发

Kylin的特性、生态圈

  1.可扩展、超快OLAP引擎

  2.Hadoop ANSI SQL 接口

  3.交互式查询能力

  4.多维立方体MOLAP Cube

  5.与BI工具(Tableau)无缝整合

  6.其他特性

    

LDAP:

  LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。

  它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。

  LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。

  LDAP目录以树状的层次结构来存储数据。如果你对自顶向下的DNS树或UNIX文件的目录树比较熟悉,也就很容易掌握LDAP目录树这个概念了。就象DNS的主机名那样,

  LDAP目录记录的标识名(Distinguished Name,简称DN)是用来读取单个记录,以及回溯到树的顶部。

Kylin生态圈

  

ETL: Extract-Transform-Load

  用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

  ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

  ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

  

    

  

  

  

  

  

Kylin工作原理、体系架构的更多相关文章

  1. zabbix监控的基础概念、工作原理及架构(一)

    zabbix监控的基础概念.工作原理及架构 转载于网络 一.什么是zabbix及优缺点 Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的 ...

  2. zabbix监控的基础概念、工作原理及架构

    一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WE ...

  3. 【转】 ISP概述、工作原理及架构

    1.概述 ISP全称Image Signal Processing,即图像信号处理.主要用来对前端图像传感器输出信号处理的单元,以匹配不同厂商的图象传感器. ISP 通过一系列数字图像处理算法完成对数 ...

  4. CSI 工作原理与JuiceFS CSI Driver 的架构设计详解

    容器存储接口(Container Storage Interface)简称 CSI,CSI 建立了行业标准接口的规范,借助 CSI 容器编排系统(CO)可以将任意存储系统暴露给自己的容器工作负载.Ju ...

  5. 《浏览器工作原理与实践》<01>Chrome架构:仅仅打开了1个页面,为什么有4个进程?

    无论你是想要设计高性能 Web 应用,还是要优化现有的 Web 应用,你都需要了解浏览器中的网络流程.页面渲染过程,JavaScript 执行流程,以及 Web 安全理论,而这些功能是分散在浏览器的各 ...

  6. CPU的内部架构和工作原理 (转,相当不错)

    http://blog.chinaunix.net/uid-23069658-id-3563960.html 一直以来,总以为CPU内部真是如当年学习<计算机组成原理>时书上所介绍的那样, ...

  7. CPU的内部架构和工作原理

    一直以来,总以为CPU内部真是如当年学习<计算机组成原理>时书上所介绍的那样,是各种逻辑门器件的组合.当看到纳米技术时就想,真的可以把那些器件做的那么小么?直到看了Intel CPU制作流 ...

  8. Tomcat 系统架构与设计模式,第 1 部分: 工作原理(转载)

    简介: 这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式.本文是第 1 部分,将主要从 Tomcat 如何分发请求.如何处理多用户同时请求,还有它的 ...

  9. Tomcat 系统架构与设计模式,第 1 部分: 工作原理

    简介: 这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式.本文是第 1 部分,将主要从 Tomcat 如何分发请求.如何处理多用户同时请求,还有它的 ...

随机推荐

  1. Visual Assist 10.9.2248 破解版(支持VS2017)

    [1]下载安装包 下载地址:https://download.csdn.net/download/qq_20044811/10597708 [2]安装与破解方法 第一步:关闭VS所有打开窗体 第二步: ...

  2. 解决caffe绘制训练过程的loss和accuracy曲线时候报错:paste: aux4.txt: 没有那个文件或目录 rm: 无法删除"aux4.txt": 没有那个文件或目录

    我用的是faster-rcnn,在绘制训练过程的loss和accuracy曲线时候,抛出如下错误,在网上查找无数大牛博客后无果,自己稍微看了下代码,发现,extract_seconds.py文件的 g ...

  3. python pandas 基础理解

    其实每一篇博客我都要用很多琐碎的时间片段来学完写完,每次一点点,用到了就学一点,学一点就记录一点,要用上好几天甚至一两个礼拜才感觉某一小类的知识结构学的差不多了. Pandas 是基于 NumPy 的 ...

  4. rabbitmq的相关知识

    1. 如何确保消息正确地发送至RabbitMQ? RabbitMQ使用发送方确认模式,确保消息正确地发送到RabbitMQ. 发送方确认模式:将信道设置成confirm模式(发送方确认模式),则所有在 ...

  5. 转:获得数据库自增长ID(ACCESS)与(SQLSERVER)

    转载自:http://www.cnblogs.com/chinahnzl/articles/968649.html 问题CSDN 里面不时有初学者疑惑:如何获取自增长列(标识列)的ID,并写入另一张表 ...

  6. linux java -version 和 javac -version 不一致

    我是在6 的基础上又装了一个 8. 结果java -v 和 javac -v的 一个显示 6 一个显示8 解决方式: 再次source 一下配置文件 如: source ~/.bashrc   或者  ...

  7. Qt浅谈之一:内存泄露(总结)

    一.简介       Qt内存管理机制:Qt 在内部能够维护对象的层次结构.对于可视元素,这种层次结构就是子组件与父组件的关系:对于非可视元素,则是一个对象与另一个对象的从属关系.在 Qt 中,在 Q ...

  8. Hybrid App中原生页面 VS H5页面(分享)

    本文部分转自  http://www.jianshu.com/p/00ff5664e000 现有3类主流APP,分别为:Web App.Hybrid App(混合模式移动应用,Hybrid有“混合的” ...

  9. hibernate自动创建表报表不存在

    在hibernate.cfg.xml配置了<property name="hibernate.hbm2ddl.auto">update</property> ...

  10. URL的解析,C语言实现

    源: URL的解析,C语言实现 c语言实现urlencode和decode