一、简介

Apache Kylin是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。之所以说它是国人之光,是因为它是首个由国人主导的Apache顶级开源项目,能在亚秒内查询巨大的表。 

二、基本概念

先了解一下几个概念,如下有一张表
ID 客户号 交易日期 交易类型 金额
1 001 20201230 工资代发 1000000
2 002 20210101 转账 66666
3 003 20210115 信用卡还款 1888

查询某个客户在哪个时间进行某种交易的金额,这种是多维分析,其中客户号、交易日期和交易类型是维度(Dimensions),金额是度量(Measures)

根据表格中三个维度一个度量,可以画出如下图形
对于一个多维模型,在查询上有多种组合,比如一维的:客户号/交易日期/交易类型二维的:客户号+交易日期/客户号+交易类型/交易日期和交易类型三维的:客户号+交易日期+交易类型对于每一种组合,称之为Cuboid,这这些组合的统一,则是Cube。Cube定义了使用的模型、模型的维度和度量等信息。

三、作用及原理

有些读者就要说了:概念讲了一堆,就是不说它到底为什么出现,解决什么问题,难怪阅读量这么少
别急,这不就准备讲了嘛。Kylin是为减少在Hadoop/Spark上百亿规模数据查询延迟而设计的。
对于效率要求较高的大规模数据集的查询,尤其多维查询的时候,数据仓库中一般存在事实表和维度表,需要关联很多维度表,这就给查询带来一定的压力,查询效率低下。为了解决这个问题,Kylin应运而生。
但是Kylin为什么快呢?
主要是因为它的预计算,它将多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube并存储到HBase中,供查询时直接访问。说到底就是用空间换时间。
大致流程将数据源(比如Hive)中的数据按照指定的维度和指标,由计算引擎MapReduce离线计算出所有可能的查询结果(即Cube)存储到HBase中。HBase中每行记录的Rowkey由各维度的值拼接而成,度量会保存在column family中。为了减少存储代价,会对维度和度量进行编码。查询阶段,利用HBase列存储的特性就可以保证Kylin有良好的快速响应和高并发。

四、Kylin的架构

Kylin的架构主要有这几个部分:
源数据:Hive、Kafka、RDBMS等;
对外查询接口:REST API、JDBC/ODBC;
存储引擎:HBase;
构建Cube的计算引擎
 其中构建Cube的计算引擎模块如下:
REST Server:是一套面向应用程序开发的入口点,旨在实现针对Kylin平台的应用开发工作。
Query Engine:当cube准备就绪后,查询引擎就能够获取并解析用户查询。
Routing:查询路由,负责将解析的SQL生成的执行计划转换成cube缓存的查询,若查询没办法从cube缓存中获取,则下压至数据源进行查询。
Metadata:Kylin是由元数据驱动的。元数据管理工具是一大关键性组件,用于对保存在Kylin当中的所有元数据进行管理,其中包括最为重要的cube元数据。
Cube Build Engine:这套引擎的作用在于处理所有离线任务。

五、总结

本文大概介绍了Kylin以及一些相关的概念和原理、架构。更多内容可以去Kylin 官网进行了解.

国人之光:大数据分析神器Apache Kylin的更多相关文章

  1. Windows 上用IntelliJ Idea调试百度大数据分析框架Apache Doris FE

    A. 环境准备 1. 安装jdk1.8+, Intelij IDEA 2. linux上编译好fe前端代码,主要目的是获取自动生成的代码,加入到前段工程里面去用于在idea中编译fe工程.具体编译请参 ...

  2. 大数据分析引擎Apache Flink

    Apache Flink是一个高效.分布式.基于Java实现的通用大数据分析引擎,它具有分布式 MapReduce一类平台的高效性.灵活性和扩展性以及并行数据库查询优化方案,它支持批量和基于流的数据分 ...

  3. 【大数据安全】Apache Kylin 安全配置(Kerberos)

    1. 概述 本文首先会简单介绍Kylin的安装配置,然后介绍启用Kerberos的CDH集群中如何部署及使用Kylin. Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spa ...

  4. CentOS 上使用vscode 调试百度大数据分析框架Apache Doris BE

    A: 前期准备工作 1. 安装vscode,详细请参见vscode官网https://code.visualstudio.com/docs/setup/linux,摘要如下: sudo rpm --i ...

  5. 《基于Apache Kylin构建大数据分析平台》

    Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...

  6. 【转】使用Apache Kylin搭建企业级开源大数据分析平台

    http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭 ...

  7. 大数据分析神兽麒麟(Apache Kylin)

    1.Apache Kylin是什么? 在现在的大数据时代,越来越多的企业开始使用Hadoop管理数据,但是现有的业务分析工具(如Tableau,Microstrategy等)往往存在很大的局限,如难以 ...

  8. 大数据分析界的“神兽”Apache Kylin有多牛?【转】

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

  9. 使用Apache Kylin搭建企业级开源大数据分析平台

    转:http://www.thebigdata.cn/JieJueFangAn/30143.html 我先做一个简单介绍我叫史少锋,我曾经在IBM.eBay做过大数据.云架构的开发,现在是Kylige ...

随机推荐

  1. VMware & centos 7 配置克隆虚拟机

    VMware & centos 7 配置克隆虚拟机 之前一直使用的是centos6,买了新电脑试了一下centos7,安装过程果然采坑不少,下面是我成功安装的过程 克隆虚拟机 安装虚拟机,安装 ...

  2. 2020-2021-1 20209307《Linux内核原理与分析》第六周作业

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第六周作业> 这个作业的目标 & ...

  3. js下 Day11、案例

    一.成绩分类 效果图: 功能思路分析: 1. 渲染数据 2. 鼠标按下开启拖拽 \1. 给成绩盒子绑定鼠标按下事件(mousedown),用事件委托做多个标签的拖拽 \2. 开启控制拖拽的变量 \3. ...

  4. 面试官问我:Object o = new Object() 占用了多少个字节?

    小小面试一下 前言蜜语 最近马师傅火的不要不要的,虽然没有抢到耗子尾汁的商标注册权,但是必须得蹭一波马师傅的热度,下面就是闪电五连鞭的教学环节,你准备好了吗! 在正式内容开始前先甩两篇关于类加载机制和 ...

  5. 【Git】命令思维导图

    Git命令思维导图

  6. 代替DDNS方案,自动更新CloudFlare的AAAA记录

    为解决DDNS更新慢的问题,直接通过cloudflare的API来更新AAAA记录 将下面代码保存成cloudflare_ipv6_update.ps1 $config = @{} $config.z ...

  7. 微信小说分销系统设计之使用百度Echarts地图统计功能统计微信粉丝地域分布情况

    /** 转载请保留博客园原地址以及版权声明,请勿恶意修改,本博客中的内容均属于技术交流,请勿用于商业用途,谢谢配合 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www. ...

  8. Java进阶专题(二十) 消息中间件架构体系(2)-- RabbitMQ研究

    前言 接上文,这个继续介绍RabbitMQ,并理解其底层原理. 介绍 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的 ...

  9. 浅析Python闭包

    1.什么是闭包 在介绍闭包概念前,我们先来看一段简短的代码 def sum_calc(*args): def wrapper(): sum = 0 for n in args: sum += n; r ...

  10. Android 安全研究 hook 神器frida学习(一)

    在进行安卓安全研究时,hook技术是不可或缺的,常用的有Xposed:Java层的HOOK框架,由于要修改Zgote进程,需要Root,体验过Xposed,整个过程还是很繁琐的,并且无法hook,na ...