APACHE KYLIN 簡(jiǎn)介

KYLIN是什么熏矿?

上古神獸,直接上圖


- 可擴(kuò)展超快OLAP引擎:?

Kylin是為減少在Hadoop上百億規(guī)模數(shù)據(jù)查詢延遲而設(shè)計(jì)

- Hadoop ANSI SQL 接口:?

Kylin為Hadoop提供標(biāo)準(zhǔn)SQL支持大部分查詢功能

- 交互式查詢能力:?

通過(guò)Kylin,用戶可以與Hadoop數(shù)據(jù)進(jìn)行亞秒級(jí)交互夭问,在同樣的數(shù)據(jù)集上提供比Hive更好的性能

- 多維立方體(MOLAP Cube):

用戶能夠在Kylin里為百億以上數(shù)據(jù)集定義數(shù)據(jù)模型并構(gòu)建立方體

- 與BI工具無(wú)縫整合:

Kylin提供與BI工具烛卧,如Tableau,的整合能力缝彬,即將提供對(duì)其他工具的整合

- 其他特性:?

- Job管理與監(jiān)控?

- 壓縮與編碼?

- 增量更新?

- 利用HBase Coprocessor

- 基于HyperLogLog的Dinstinc Count近似算法?

- 友好的web界面以管理萌焰,監(jiān)控和使用立方體?

- 項(xiàng)目及立方體級(jí)別的訪問(wèn)控制安全

- 支持LDAP


Kylin的發(fā)展歷程

源自ebay上海團(tuán)隊(duì)

2014年10月開(kāi)源

2015年11月畢業(yè)

目前最高版本2.2 ,本次介紹的是1.5.1



前奏


事實(shí)表和維度表

事實(shí)表:事實(shí)表是記錄具體時(shí)間了谷浅,包含了每個(gè)事件的具體要素扒俯,以及具體發(fā)生的事情

維度表:是對(duì)事實(shí)表中事件的要素描述信息。

星型模型和雪花模型

星型模型是一張事實(shí)表對(duì)應(yīng)多張維度表


雪花模型一疯,顧名思義撼玄,事實(shí)表連接事實(shí)表再連接維度表


OLAP

聯(lián)機(jī)分析處理

OLAP的基本操作

鉆取(Drill-down)


上卷(Roll-up)

切片(Slice)


切塊(Dice)


旋轉(zhuǎn)(Pivot)

數(shù)據(jù)立方體 cube

舉例說(shuō)明墩邀,什么是cube掌猛,

cube是所有的dimensions組合,任一dimensions的組合稱為cuboid

kylin整體結(jié)構(gòu)

SQL查詢

支持大部分sql查詢眉睹。

cube 構(gòu)建完成后荔茬,sql先被翻譯成執(zhí)行計(jì)劃废膘,從這個(gè)計(jì)劃,可以執(zhí)照要查表兔院,怎么join殖卑,還有過(guò)濾條件等,去找cube坊萝,如果命中了cube孵稽,會(huì)被發(fā)送到存儲(chǔ)引擎,翻譯成scan操作十偶,

group by --cubeid

where 條件--開(kāi)始結(jié)束值

result 菩鲜,rowkey 反向編碼--dimesion值

value -- measure,

利用hbase列存儲(chǔ)特性惦积,

Cube的構(gòu)建

分為兩種 接校,全量構(gòu)建,增量構(gòu)建

全量構(gòu)建

事實(shí)表數(shù)據(jù)不是按照世間增長(zhǎng)的狮崩,

事實(shí)表的數(shù)據(jù)比較小蛛勉,或者更新頻率很低

增量構(gòu)建

有時(shí)間維度,構(gòu)建的時(shí)候要選取時(shí)間范圍

每次構(gòu)建睦柴,將生成一個(gè)segment

增量構(gòu)建

前提:必須要有一個(gè)時(shí)間維度诽凌,用來(lái)分割。

起始時(shí)間就是上一個(gè)cube的結(jié)束時(shí)間

1 model 層面的設(shè)置?


2 cube 層面的設(shè)置?


觸發(fā)增量創(chuàng)建

1 WEB

2 調(diào)用rest API


合并

將多個(gè)segment合并坦敌,起到減少segment的目的

1 手工合并

2 自動(dòng)合并

舉例

設(shè)置一個(gè)規(guī)則 一級(jí)28 二級(jí)7

A-28 B-7 C-1 D-1 E-1 F-1 G-1 H-1 如果此時(shí)加入一個(gè)I-1?

保留segment?

CUBE 優(yōu)化


Cube 維度優(yōu)化主要方式

· Cube ID 剪枝優(yōu)化

· 衍生維度優(yōu)化

· 聚合組優(yōu)化

· 強(qiáng)制維度

· 層次維度

· 聯(lián)合維度

· Cube并發(fā)粒度優(yōu)化


1 維度詛咒

????2 的n次方

2 檢查cubeid數(shù)量

./kylin.sh org.apache.kylin.engine.mr.common.CubeStatsReader cube_name


Statistics of test_cube[19700101000000_20170101000000]


Cube statistics hll precision: 14

Total cuboids: 3

Total estimated rows: 180

Total estimated size(MB):0.0013949871063232422

Sampling percentage:? 100

Mapper overlap ratio: 1.45

Mapper number: 0

Length of dimensionIDC_INFRASTRUCTURE_DB.HDFS_META.USERNAME is 1

Length of dimension IDC_INFRASTRUCTURE_DB.HDFS_META.GROUPNAMEis 1

|---- Cuboid 11, est row: 91, est MB: 0

???|---- Cuboid 01, est row: 43, est MB: 0, shrink: 47.25%

???|---- Cuboid 10, est row: 46, est MB: 0, shrink: 50.55%

----------------------------------------------------------------------------

(1)????首先看到Segment整體信息侣诵,Cube statistics hll precision指對(duì)Cube估計(jì)的大小精度,以及Cube中包含的Cuboid數(shù)量狱窘,對(duì)于此Cube中的Segment包含的總行數(shù)估計(jì)和Segment大小的估計(jì)值杜顺。這里需要說(shuō)明的是,Segment預(yù)估的大小會(huì)影響構(gòu)建Cube中的步驟蘸炸,比如常見(jiàn)的mapper和reducer數(shù)量躬络,數(shù)據(jù)split大小等。

(2)????接著可以看到所有Cuboid的詳細(xì)信息幻馁,其結(jié)果以樹(shù)結(jié)構(gòu)的方式羅列出來(lái)洗鸵。每個(gè)節(jié)點(diǎn)代表一個(gè)Cuboid,每個(gè)Cuboid都是由一連串的0或1的數(shù)字組成仗嗦,數(shù)字串的長(zhǎng)度等于有效維度的數(shù)量膘滨,從左到右的每個(gè)數(shù)字依次代表Rowkeys設(shè)置中的各個(gè)維度。如果數(shù)字為0稀拐,則代表這個(gè)Cuboid中不存在相應(yīng)的維度火邓;如果數(shù)字為1,則代表這個(gè)Cuboid中存在相應(yīng)的維度。我們也可以看到铲咨,除了最頂端的Cuboid之外躲胳,每個(gè)Cuboid都有一個(gè)父Cuboid,且都比父Cuboid少了一個(gè)“1”纤勒,也就是比父Cuboid少一個(gè)維度坯苹。

(3)????最頂端的父Cuboid為Base Cuboid,它直接由源數(shù)據(jù)計(jì)算而來(lái)摇天,包含所有的維度粹湃。

(4)????對(duì)于每層的Cuboid還有其他的統(tǒng)計(jì)信息,包括Cuboid行數(shù)的估計(jì)值泉坐,該Cuboid大小的估計(jì)值为鳄,以及此Cuboid的行數(shù)與父Cuboid的對(duì)比值(即Shrink值)。

3.??????檢查Cube大小

在Kylin的Web GUI的Model頁(yè)面中腕让,我們可以選擇一個(gè)READY狀態(tài)的Cube孤钦,將鼠標(biāo)移到該Cube的Cube Size列時(shí),會(huì)提示Cube的源數(shù)據(jù)大小纯丸,以及當(dāng)前Cube的大小除以源數(shù)據(jù)大小的比例偏形,稱為膨脹率(Expansion Rate)。


一般來(lái)說(shuō)觉鼻,Cube的膨脹率應(yīng)該在0% ~ 1000%之間壳猜,如果有個(gè)Cube的膨脹率超過(guò)1000%,那么Cube管理員就應(yīng)該查找原因了滑凉,通常原因有以下幾個(gè)方面:

1)、Cube的維度數(shù)量較多喘帚,沒(méi)有進(jìn)行很好的剪枝畅姊;

2)、Cube中存在較高基數(shù)的維度吹由,導(dǎo)致這類(lèi)維度每個(gè)Cuboid占用的空間很大若未,從而造成Cube體積變大;

3)倾鲫、存在比較占用空間的度量粗合。

對(duì)于Cube膨脹率高的情況,需要針對(duì)實(shí)際的業(yè)務(wù)需求進(jìn)行分析乌昔,可以考慮通過(guò)下面的幾種優(yōu)化方式進(jìn)行優(yōu)化:


[Derived Dim]衍生維度優(yōu)化

衍生維度(Derived Dim):當(dāng)一個(gè)或者多個(gè)維度能夠從主鍵中推斷出來(lái)隙疚,那么這些維度列就稱之為衍生“Derived” 列。

衍生維度(Derived Dim)優(yōu)化效果:維度表中的n個(gè)維度計(jì)算磕道,將Cuboid從2^n 減為2供屉。

使用場(chǎng)景:在星型模型中,有一個(gè)用戶維度表,表中包含了ID伶丐,A悼做,B,C 哗魂,其中ID 為PK肛走,在這里通過(guò)ID的值就可以確定A,B录别,C的值朽色,因?yàn)锳,B庶灿,C為ID的Derived纵搁。當(dāng)進(jìn)行build一個(gè)Cube包含A,B往踢,C 的時(shí)候腾誉,只需要包含ID,并且將A峻呕,B利职,C標(biāo)記為derived ,這樣derived列就不會(huì)生成Cuboid 瘦癌。

[Aggregation Group]聚合組優(yōu)化

聚合組(Aggregation Group): 根據(jù)業(yè)務(wù)的維度組合猪贪,劃分出具有強(qiáng)依賴的組合,這些組合稱之為聚合組讯私,在聚合組內(nèi)热押,維度之間的組合會(huì)預(yù)計(jì)算,聚合組之間并不交叉預(yù)計(jì)算斤寇,從而減少Cuboid的數(shù)量.

聚合組優(yōu)化效果:如果有4個(gè)維度桶癣,分別為A,B娘锁,C牙寞,D,那么就會(huì)有16個(gè)Cuboid莫秆,如果AB和CD分別為聚集組的話间雀,那么Cuboid的數(shù)量就縮減為8個(gè)。

使用場(chǎng)景:所有維度中镊屎,有部分維度之間具有聚合操作的惹挟,可以將這些維度放在一個(gè)聚合組內(nèi)。不放在聚合組里面的杯道,就直接進(jìn)行Base Cube操作匪煌。

[Mandatory Dimensions]強(qiáng)制維度

強(qiáng)制維度(Mandatory Dimensions):所有Cubeid中都包含的維度稱之為強(qiáng)制維度责蝠,不包含強(qiáng)制維度的Cubeid不會(huì)計(jì)算。

優(yōu)化效果:只計(jì)算包含強(qiáng)制維度的Cubeid萎庭,Cubeid的數(shù)量會(huì)縮減一半霜医。

使用場(chǎng)景:假如有三個(gè)維度A,B驳规,C肴敛,那么Cuboid就會(huì)有8個(gè),分別為ABC吗购,AB医男,BC,AC捻勉,A镀梭,B,C踱启,這時(shí)將A設(shè)置為強(qiáng)制維度报账,那么就只會(huì)計(jì)算ABC,AB埠偿,AC透罢,A這四個(gè) Cubeid。

[Hierarchy Dimension]層次維度

層次維度(Hierarchy Dim):某些維度之間具有上下層次關(guān)聯(lián)冠蒋。

優(yōu)化效果:如果有三個(gè)維度A羽圃,B,C 設(shè)置為層次維度抖剿,那么Cuboid數(shù)量將由2^3減為3+1朽寞。

使用場(chǎng)景:比較適用于進(jìn)行下鉆分析,比如年月日斩郎,省市縣這種愁憔。

[Joint Dimension]聯(lián)合維度

聯(lián)合維度(Joint Dimension):固定用來(lái)分組的維度查詢。

優(yōu)化效果:將多個(gè)維度優(yōu)化到一個(gè)維度孽拷。

使用場(chǎng)景:假如有ABC三個(gè)維度,但是在查詢的時(shí)候只會(huì)出現(xiàn)Group by A半抱,B脓恕,C,而不會(huì)出現(xiàn)Group A窿侈,Group by B炼幔,Group by A、B等等這種情況史简,那么就可以將A乃秀,B,C設(shè)置為聯(lián)合維度。

調(diào)整Cube并發(fā)粒度

當(dāng)Segment中某個(gè)Cuboid的大小超出一定的閾值時(shí)跺讯,系統(tǒng)會(huì)將該Cuboid的數(shù)據(jù)分片到多個(gè)Hbase Region Server枢贿,從而實(shí)現(xiàn)Cuboid數(shù)據(jù)讀取的并行化,優(yōu)化Cube的查詢速度刀脏。

kylin的默認(rèn)設(shè)置中

kylin.storage.hbase.region-cut-gb=5局荚,

kylin.storage.hbase.min-region-count=1,

kylin.storage.hbase.max-region-count=500

在實(shí)際應(yīng)用中(根據(jù)實(shí)際數(shù)據(jù)量調(diào)整),可以將

kylin.storage.hbase.region-cut-gb=1

kylin.storage.hbase.min-region-count=2,

kylin.storage.hbase.max-region-count=100愈污,


上面設(shè)置為最小為2個(gè)分區(qū)耀态,每個(gè)分區(qū)大小為1G,最多設(shè)置100個(gè)region分區(qū)暂雹。

ROWKEY的優(yōu)化

1 編碼

kylin有以下幾種編碼方式

Date

time

integer

Dict

Fixedlength

2 調(diào)整rowkey的順序

在查詢中被用作過(guò)濾條件的維度放在其他維度前面

經(jīng)常出現(xiàn)的維度放在前面

基數(shù)較高的放在前面

降低精度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末首装,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子杭跪,更是在濱河造成了極大的恐慌仙逻,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揍魂,死亡現(xiàn)場(chǎng)離奇詭異桨醋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)现斋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)喜最,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人庄蹋,你說(shuō)我怎么就攤上這事瞬内。” “怎么了限书?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵虫蝶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我倦西,道長(zhǎng)能真,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任扰柠,我火速辦了婚禮粉铐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卤档。我一直安慰自己蝙泼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布劝枣。 她就那樣靜靜地躺著汤踏,像睡著了一般织鲸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溪胶,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天搂擦,我揣著相機(jī)與錄音,去河邊找鬼载荔。 笑死盾饮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的懒熙。 我是一名探鬼主播丘损,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼工扎!你這毒婦竟也來(lái)了徘钥?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肢娘,失蹤者是張志新(化名)和其女友劉穎呈础,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體橱健,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡而钞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拘荡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臼节。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖珊皿,靈堂內(nèi)的尸體忽然破棺而出网缝,到底是詐尸還是另有隱情,我是刑警寧澤蟋定,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布粉臊,位于F島的核電站,受9級(jí)特大地震影響驶兜,放射性物質(zhì)發(fā)生泄漏扼仲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一抄淑、第九天 我趴在偏房一處隱蔽的房頂上張望犀盟。 院中可真熱鬧,春花似錦蝇狼、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贱枣。三九已至,卻和暖如春颤专,著一層夾襖步出監(jiān)牢的瞬間纽哥,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工栖秕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留春塌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓簇捍,卻偏偏與公主長(zhǎng)得像只壳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暑塑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容