Kylin工作原理、体系架构

核心思想:预计算。

  对多维分析可能用到的度量进行预计算,将计算好的结果保存成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是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

  

    

  

 

 

  

 

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

转载于:https://www.cnblogs.com/panpanwelcome/p/7895564.html

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

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

相关文章

工业相机图像传感器的靶面大小

在机器视觉中,工业相机是一种比较重要的配件。而在 工业相机中,图像传感器又是最最关键核心的东西。而图像传感器的靶面的大小,往往直接关系到成像的质量。通常来讲,图像的成像质量与像素的大小成正比。这也就意味着,同…

SpringMVC+Mybatis学习

简单Web项目搭建&#xff1a; 一.流程 1. 导包 n个springMVC&#xff1b; 2个mybatis<其中一个是mybatis-spring>&#xff1b; 3个jackson包&#xff1b; 2. xml配置 web.xml和applicationContext.xml 3. 建包&#xff0c;建接口&#xff0c;建类 4. 建jsp 二&#xff1a…

PPT怎么在线转视频?

PPT在线转视频的方法有哪些&#xff1f;在PPT中有些播放上的问题还是可以进行文件的转换&#xff0c;下面就给大家简单的介绍一下方法。步骤一&#xff1a;PPT转视频的直接方法是进入迅捷PDF在线转换器网站中&#xff0c;点击导航栏中的视频音频转换中的PPT转视频&#xff1b; …

At least one JPA metamodel must be present!

使用spring jpa是一直报这个错&#xff0c;找了两天网上没有找到答案&#xff0c;最后发现时配置配错了&#xff0c;如下&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa<…

夜貓子”必需的!——融合夜視技術

融合夜視技術是一項正在發展中的前沿技術&#xff0c;通過將多個工作在不同波段的夜視傳感器獲得的圖像經過處理後生成高質量的融合圖像&#xff0c;融合圖像的分辨率更高&#xff0c;能夠揭示出那些很難被看到的特徵。按照融合的方式&#xff0c;融合夜視技術可以分為數字融合…

Vue中登录模块

转载于:https://www.cnblogs.com/DZzzz/p/8921783.html

unity 中的UGUI 屏蔽鼠标穿透

void Update() { if(IsTouchedUI()) { Debug.Log("当前触摸在UI上"); } else { Debug.Log("当前没有触摸在UI上"); } } void OnMouseDown() { if(IsTouchedUI()) { Debug.Log("当前触摸在UI上"); } else { Debug.Log(&qu…

深度解析红外探测器

辐射/设计/技术之前我们跟大家解析了红外探测器的相关性能参数。 对于红外探测器的工作原理你了解多少呢&#xff1f;今天小编再继续上次的讲解&#xff0c;为大家解析非制冷红外焦平面探测器技术原理 及机芯介绍。 非制冷红外技术原理 非制冷红外探测器利用红外辐射的热效应&a…

js基础总结性能优化

一.加载和执行1.推荐所有的script标签尽可能放到body标签的底部&#xff0c;以尽量减少对整体页面下载速度的影响。2.组织脚本减少页面包含的scirpt标签数量&#xff0c;可以把多个文件合并成一个。3.无阻塞脚本1&#xff09;.延迟脚本defer:html解析完才加载&#xff0c;执行顺…

Python2 Python3 爬取赶集网租房信息,带源码分析

*之前偶然看了某个腾讯公开课的视频,写的爬取赶集网的租房信息,这几天突然想起来,于是自己分析了一下赶集网的信息,然后自己写了一遍,写完又用用Python3重写了一遍.之中也遇见了少许的坑.记一下.算是一个总结.*python2 爬取赶集网租房信息与网站分析 分析目标网站url寻找目标标…

红外热成像技术原理

目前&#xff0c;新的热成像仪主要采用非致冷焦平面阵列技术&#xff0c;集成数万个乃至数十万个信号放大器&#xff0c;将芯片置于光学系统的焦平面上&#xff0c;无须光机扫描系统而取得目标的全景图像&#xff0c;从而大大提高了灵敏度和热分辨率&#xff0c;并进一步地提高…

网站中公用头部与尾部

一、html 1. <iframe src"1.html" frameborder"0"></iframe> 2. <embed src"1.html"/> 二、写公用的js 文件&#xff0c;js中写字divde符串&#xff0c;然后在需要的页面适当位置引入公用的js. 三、ajax动态拉取填充 四、后端…

基于webpack的PC端和mobile端开发以及生产环境的搭建

我们用webpack做单页面应用开发应该尝试过很多次了&#xff0c;如果在同一个项目需要支持PC端和移动端&#xff0c;做成多页面应用&#xff0c;开发时能根据请求的终端返回不同的内容&#xff0c;应该怎么做呢&#xff1f;以下描述的是我尝试的一种方案&#xff0c;并且以vue-c…

深度学习简介(一)——卷积神经网络

本文的主要目的&#xff0c;是简单介绍时下流行的深度学习算法的基础知识&#xff0c;本人也看过许多其他教程&#xff0c;感觉其中大部分讲的还是太过深奥&#xff0c;于是便有了写一篇科普文的想法。博主也是现学现卖&#xff0c;文中如有不当之处&#xff0c;请各位指出&…

node+mongoose使用例子

https://github.com/Aquarius1993/nodeNotes 功能 1. 注册 2. 登录 3. 修改密码 4. 修改头像 5. 获取用户笔记 6. 添加&#xff0c;删除,更新笔记安装部署 1. 安装 Node.js MongoDB 2. npm install 3. 启动 MongoDB 4. npm start 5. visit http://localhost:8899 https://git…

FastJson的常用操作

转载&#xff1a;https://www.cnblogs.com/Ming8006/p/6944954.html 常用操作包括以下内容&#xff1a; 对象与&#xff08;JsonObject或JsonArray&#xff09;与String的互换String转换为&#xff08;JsonObject或JsonArray&#xff09;如何保持顺序Eval的使用值为null的&…

Jenkins持续集成 之 Jenkins安装

一、安装JDK与TOMCAT8 参考地址&#xff1a; http://ibm.chick.blog.163.com/blog/static/144201610201652811537410/ 二、下载Jenkins安装包 wget http://mirrors.jenkins.io/war/latest/jenkins.war 三、把jenkins.war放到TOMCAT下的webapps 四、启动tomcat并访问 http://10.…

夜视模式,多少猥琐相机假汝之名

一般相机加装一个红外滤光片&#xff0c;就是一个可以用来干猥琐事情的相机了。现在有相机直接把这个功能整合了&#xff0c;它的这个功能叫红外夜视模式&#xff0c;可以拍下黑暗中的物体&#xff0c;当然&#xff0c;也可以透视纺织品和一些其他材质的衣物。这部相机具有500万…

vue-router.esm.js?fe87:16 [vue-router] Route with name 'page' does not exist

本文地址&#xff1a;http://www.cnblogs.com/veinyin/p/7910525.html 我的路由配置 1 { 2 path: /page, 3 name: page, 4 component: page 5 } 我的 router-link <router-link :to"{name:page,params:{trans:ahahahaha}}">page</route…

Java中设计模式之单例设计模式-1

单例作用 1 节省内存2 可以避免多种状态导致状态冲突单例的创建步骤 1 私有化构造方法2 私有化声明的属性3 getInstance4 方法需要静态单例分类 1.懒汉式 2.饿汉式 两种单例区别&#xff1a; 饿汉式 线程安全的 懒汉式 线程不安全的 饿汉式&#xff1a; package 设计模式之单…