淘寶客導(dǎo)購網(wǎng)站模板seo排名首頁
Kylin
1、Apache Kylin概覽
1.1 什么是Kylin
Apache Kylin?是一個(gè)開源的、分布式的分析型數(shù)據(jù)倉庫,提供Hadoop/Spark 之上的 SQL 查詢接口及多維分析(OLAP)能力以支持超大規(guī)模數(shù)據(jù),最初由 eBay 開發(fā)并貢獻(xiàn)至開源社區(qū)。它能在亞秒內(nèi)查詢巨大的表。
1.2 Kylin的簡(jiǎn)介
Kylin
的出現(xiàn)就是為了解決大數(shù)據(jù)系統(tǒng)中TB
級(jí)別數(shù)據(jù)的數(shù)據(jù)分析需求,它提供Hadoop/Spark
之上的SQL
查詢接口及多維分析(OLAP
)能力以支持超大規(guī)模數(shù)據(jù),它能在亞秒內(nèi)查詢巨大的Hive
表。其核心是預(yù)計(jì)算,計(jì)算結(jié)果存在HBase
中。
作為大數(shù)據(jù)分析神器,它也需要站在巨人的肩膀上,依賴HDFS
、MapReduce/Spark
、Hive/Kafka
、HBase
等服務(wù)。
1.3 Kylin的優(yōu)勢(shì)
Kylin
的主要優(yōu)勢(shì)為以下幾點(diǎn):
- 可擴(kuò)展超快
OLAP
引擎:Kylin
是為減少在Hadoop/Spark
上百億規(guī)模數(shù)據(jù)查詢延遲而設(shè)計(jì) Hadoop ANSI SQL
接口:Kylin
為Hadoop
提供標(biāo)準(zhǔn)SQL
支持大部分查詢功能- 交互式查詢能力:通過
Kylin
,用戶可以與Hadoop
數(shù)據(jù)進(jìn)行亞秒級(jí)交互,在同樣的數(shù)據(jù)集上提供比Hive
更好的性能 - 多維立方體(
MOLAP Cube
):用戶能夠在Kylin
里為百億以上數(shù)據(jù)集定義數(shù)據(jù)模型并構(gòu)建立方體 - 與
BI
工具無縫整合:Kylin
提供與BI工具的整合能力,如Tableau
,PowerBI/Excel
,MSTR
,QlikSense
,Hue
和SuperSet
- 其它特性:
Job
管理與監(jiān)控;壓縮與編碼;增量更新;利用HBase Coprocessor
;基于HyperLogLog
的Dinstinc Count
近似算法;友好的web
界面以管理,監(jiān)控和使用立方體;項(xiàng)目及表級(jí)別的訪問控制安全;支持LDAP
、SSO
1.4 基本原理
Kylin
的核心思想是預(yù)計(jì)算。
理論基礎(chǔ)是:以空間換時(shí)間。即多維分析可能用到的度量進(jìn)行預(yù)計(jì)算,將計(jì)算好的結(jié)果保存成Cube
并存儲(chǔ)到HBase
中,供查詢時(shí)直接訪問。
大致流程:將數(shù)據(jù)源(比如Hive
)中的數(shù)據(jù)按照指定的維度和指標(biāo),由計(jì)算引擎Mapreduce
離線計(jì)算出所有可能的查詢結(jié)果(即Cube
)存儲(chǔ)到HBase
中。HBase
中每行記錄的Rowkey
由各維度的值拼接而成,度量會(huì)保存在column family
中。為了減少存儲(chǔ)代價(jià),這里會(huì)對(duì)維度和度量進(jìn)行編碼。查詢階段,利用HBase
列存儲(chǔ)的特性就可以保證Kylin
有良好的快速響應(yīng)和高并發(fā)
Apache Kylin的工作原理是對(duì)數(shù)據(jù)模型做Cube預(yù)計(jì)算,并利用計(jì)算的結(jié)果加速查詢。具體工作過程如下:
指定數(shù)據(jù)模型,定義維度和度量
預(yù)計(jì)算Cube,計(jì)算所有Cuboid并保存為物化視圖(存儲(chǔ)到hbase中)
執(zhí)行查詢時(shí),讀取Cuboid,運(yùn)算,產(chǎn)生查詢結(jié)果
高效OLAP分析:
Kylin的查詢過程不會(huì)掃描原始記錄,而是通過預(yù)計(jì)算預(yù)先完成表的關(guān)聯(lián)、聚合等復(fù)雜運(yùn)算
利用預(yù)計(jì)算的結(jié)果來執(zhí)行查詢,相比非預(yù)計(jì)算的查詢技術(shù),其速度一般要快一到兩個(gè)數(shù)量級(jí),在超大的數(shù)據(jù)集上優(yōu)勢(shì)更明顯
數(shù)據(jù)集達(dá)到千億乃至萬億級(jí)別時(shí),Kylin的速度可以超越其他非預(yù)計(jì)算技術(shù)1000倍以上
1.5 維度和度量
維度就是觀察數(shù)據(jù)的角度,例如:
- 電商的銷售數(shù)據(jù),可以從時(shí)間的維度來觀察,也可以細(xì)化從時(shí)間和地區(qū)的維度來觀察
- 統(tǒng)計(jì)時(shí),可以把維度值相同的記錄聚合在一起,然后應(yīng)用聚合函數(shù)做累加、平均、去重計(jì)數(shù)等聚合計(jì)算
度量就是被聚合的統(tǒng)計(jì)值,也是聚合運(yùn)算的結(jié)果
1.6 數(shù)據(jù)立方體
數(shù)據(jù)立方體只是多維模型的一個(gè)形象的說法
- 為什么叫立方體?
- 立方體本身只有三維,但多維模型不僅限于三維模型,可以組合更多的維度
- 為了與傳統(tǒng)關(guān)系型數(shù)據(jù)庫的二維表區(qū)別開來,才有了數(shù)據(jù)立方體的叫法
1.7 技術(shù)架構(gòu)
-
數(shù)據(jù)源主要是Hadoop Hive,數(shù)據(jù)以關(guān)系表的形式輸入,且必須符合星形模型,保存著待分析的用戶數(shù)據(jù)。根據(jù)元數(shù)據(jù)的定義,構(gòu)建引擎從數(shù)據(jù)源抽取數(shù)據(jù),并構(gòu)建Cube
-
Kylin可以使用MapReduce或者Spark作為構(gòu)建引擎。構(gòu)建后的Cube保存在右側(cè)的存儲(chǔ)引擎中,一般選用HBase作為存儲(chǔ)
-
完成了離線構(gòu)建后,用戶可以從上方查詢系統(tǒng)發(fā)送SQL進(jìn)行查詢分析
-
Kylin提供了各種Rest API、JDBC/ODBC接口。無論從哪個(gè)接口進(jìn)入,SQL最終都會(huì)來到Rest服務(wù)層,再轉(zhuǎn)交給查詢引擎進(jìn)行處理
-
SQL語句是基于數(shù)據(jù)源的關(guān)系模型書寫的,而不是Cube
- Kylin在設(shè)計(jì)時(shí),刻意對(duì)查詢用戶屏蔽了Cube的概念
- 分析師只需要理解簡(jiǎn)單的關(guān)系模型就可以使用Kylin,沒有額外的學(xué)習(xí)門檻,傳統(tǒng)的SQL應(yīng)用也很容易遷
- 查詢引擎解析SQL,生成基于關(guān)系表的邏輯執(zhí)行計(jì)劃,然后將其轉(zhuǎn)譯為基于Cube的物理執(zhí)行計(jì)劃,最后查詢預(yù)計(jì)算生成的Cube并產(chǎn)生結(jié)果,整個(gè)過程不會(huì)訪問原始數(shù)據(jù)源
1.8 Kylin特點(diǎn)
Kylin的主要特點(diǎn)包括支持SQL接口、支持超大規(guī)模數(shù)據(jù)集、亞秒級(jí)響應(yīng)、可伸縮性、高吞吐率、BI工具集成等。
1)標(biāo)準(zhǔn)SQL接口:Kylin是以標(biāo)準(zhǔn)的SQL作為對(duì)外服務(wù)的接口。
2)支持超大數(shù)據(jù)集:Kylin對(duì)于大數(shù)據(jù)的支撐能力可能是目前所有技術(shù)中最為領(lǐng)先的。早在2015年eBay的生產(chǎn)環(huán)境中就能支持百億記錄的秒級(jí)查詢,之后在移動(dòng)的應(yīng)用場(chǎng)景中又有了千億記錄秒級(jí)查詢的案例。
3)亞秒級(jí)響應(yīng):Kylin擁有優(yōu)異的查詢相應(yīng)速度,這點(diǎn)得益于預(yù)計(jì)算,很多復(fù)雜的計(jì)算,比如連接、聚合,在離線的預(yù)計(jì)算過程中就已經(jīng)完成,這大大降低了查詢時(shí)刻所需的計(jì)算量,提高了響應(yīng)速度。
4)可伸縮性和高吞吐率:?jiǎn)喂?jié)點(diǎn)Kylin可實(shí)現(xiàn)每秒70個(gè)查詢,還可以搭建Kylin的集群。
5)BI工具集成
Kylin可以與現(xiàn)有的BI工具集成,具體包括如下內(nèi)容。
ODBC:與Tableau、Excel、PowerBI等工具集成
JDBC:與Saiku、BIRT等Java工具集成
RestAPI:與JavaScript、Web網(wǎng)頁集成
Kylin開發(fā)團(tuán)隊(duì)還貢獻(xiàn)了Zepplin的插件,也可以使用Zepplin來訪問Kylin服務(wù)。
1.9 Kylin的總體架構(gòu)
2、Kylin環(huán)境搭建
2.1 安裝地址
1)官網(wǎng)地址
http://kylin.apache.org/cn/
2)官方文檔
http://kylin.apache.org/cn/docs/
3)下載地址
http://kylin.apache.org/cn/download/
2.2 安裝部署
提示說明:?jiǎn)?dòng)kylin之前,要啟動(dòng)如下所有命令
hive --service metastore &
hive --service hiveserver2 &
mr-jobhistory-daemon.sh start historyserver
將其上傳服務(wù)器(目錄隨意)
#解壓文件
[root@node1 ~]# tar -zxvf apache-kylin-2.5.1-bin-hbase1x.tar.gz -C /usr/local/
# 修改名稱
[root@node1 local]# mv apache-kylin-2.5.1-bin-hbase1x/ kylin-2.5.1
# 啟動(dòng) 注意:?jiǎn)?dòng)之前要將HADOOP_HOME,HIVE_HOME,HBASE_HOME,HIVE_CONF配置好環(huán)境變量
[root@node1 kylin-2.5.1]# ./bin/kylin.sh start
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-msS2gQq7-1654304435820)(Kylin.assets/1619593891565.png)]
查看Web UI is at http://:7070/kylin
在http://qianfeng011:7070/kylin查看Web頁面
輸入用戶名密碼:用戶名為:ADMIN,密碼為:KYLIN(系統(tǒng)已填)
關(guān)閉:kylin.sh stop
3、基礎(chǔ)入門操作
創(chuàng)建hive表
create table if not exists default.class1(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by ',';
create table if not exists default.student(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by ',';
進(jìn)入hive添加數(shù)據(jù)
hive (default)> load data local inpath "/root/class1.txt" into table default.class1;
hive (default)> load data local inpath "/root/student.txt" into table default.student;
3.1 同步Hive表
創(chuàng)建project
同步hive數(shù)據(jù)
同步之前我們要查看Hive有哪些表
查看數(shù)據(jù)
3.2 創(chuàng)建Model
首先我們選擇創(chuàng)建New Model選項(xiàng)