Kylin知識(shí)整理與歸納

Kylin知識(shí)整理與歸納

1. kyliy的介紹及說(shuō)明

Apache Kylin是一個(gè)開(kāi)源的分布式分析引擎卵迂,提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規(guī)模數(shù)據(jù)靠柑,最初由eBay 開(kāi)發(fā)并貢獻(xiàn)至開(kāi)源社區(qū)菠净。它能在亞秒內(nèi)查詢巨大的Hive表擦囊。

OLAP全稱為在線聯(lián)機(jī)分析應(yīng)用塞茅,是一種對(duì)多維數(shù)據(jù)分析查詢的解決方案歼培。目前市面上主流的OLAP引擎震蒋,包括spark,impala,sparksql躲庄,drill等沒(méi)有一個(gè)系統(tǒng)能夠滿足所有的場(chǎng)景查詢需求查剖,沒(méi)有一個(gè)系統(tǒng)能同時(shí)在數(shù)據(jù)量,性能噪窘,和靈活性三個(gè)方面做到完美笋庄。

kylin是一個(gè)基于hadoop生態(tài)圈的OLAP分析引擎,其特點(diǎn):

(1) 可擴(kuò)展

(2) 提供標(biāo)準(zhǔn)的sql交互查詢能力倔监,方便統(tǒng)計(jì)

(3) 與BI工具可無(wú)縫結(jié)合

Kylin的設(shè)計(jì)思想就是利用空間換時(shí)間直砂,通過(guò)構(gòu)建CUBE來(lái)與計(jì)算多維數(shù)據(jù),加快查詢效率浩习。Apache Kylin旨在減少Hadoop在10億及百億規(guī)模以上數(shù)據(jù)級(jí)別的情況下的查詢延遲静暂,目前底層數(shù)據(jù)存儲(chǔ)基于HBase,具有較強(qiáng)的可伸縮性谱秽。

2. 公司成功應(yīng)用場(chǎng)景

(1) kylin在美團(tuán)的應(yīng)用

美團(tuán)的業(yè)務(wù)業(yè)務(wù)推廣線都是基于kylin的解決方案洽蛀,截至16年底,生產(chǎn)環(huán)境共有214個(gè)Cube疟赊,包含的數(shù)據(jù)總行數(shù)為2853億行郊供,Cube在HBase中的存儲(chǔ)有59TB。日查詢次數(shù)超過(guò)了50萬(wàn)次近哟,TP50查詢時(shí)延87ms驮审,TP99時(shí)延1266ms,很好地滿足了對(duì)性能的要求椅挣。

3. 安裝及使用

3.1 安裝

(1)下載kylin 的安裝包:http://kylin.apache.org/download

(2) 解壓kylin到指定的路徑: /usr/hdp/2.6.1.0-129/kylin/

(3) 設(shè)置KYLIN_HOME的環(huán)境變量

(4) 執(zhí)行$KYLIN_HOME/bin/check-env.sh? 檢查環(huán)境

(5) 啟動(dòng)kylin 服務(wù)? $KYLIN_HOME/bin/kylin.sh start

(6) 頁(yè)面查看kylin的服務(wù):http://125.64.43.160:7070/kylin

3.2 使用kylin構(gòu)建cube

3.2.1 創(chuàng)建project

創(chuàng)建完project后头岔,通過(guò)下拉框選擇對(duì)應(yīng)的project

這個(gè)時(shí)候面板還是空白,需要選擇選擇數(shù)據(jù)源鼠证,有3中方式:

(1) load hive table metastore:手動(dòng)指定hive的表(database.tablename)峡竣,多個(gè)表以,分割

(2) load hive table from tree

自動(dòng)展現(xiàn)hive的庫(kù)及表,可以選擇多個(gè)

(3) add streaming table:后面篇幅介紹

3.2.2 構(gòu)建model

(1) 點(diǎn)擊model –> new model 新建model

(2) 輸入model info量九,選擇實(shí)時(shí)表

注:實(shí)時(shí)表支持關(guān)聯(lián)表适掰,而streaming table則不支持

(3) 選擇維度列

(4) 選擇指標(biāo)

(5) 指定分區(qū)及過(guò)濾條件

沒(méi)有分區(qū)則不填寫

至此颂碧,model構(gòu)建完成,在model下类浪,可以對(duì)model進(jìn)行管理载城,

3.2.3 構(gòu)建cube

(1) 點(diǎn)擊model -> model->new cube新建cube

(2) cube info 指定cube所需要的model信息

(3) 添加維度

(4) 填寫統(tǒng)計(jì)指標(biāo)

(5) 構(gòu)建完成cube

3.2.4 build cube? 與計(jì)算數(shù)據(jù)

(1)點(diǎn)擊action -> build

(2) 點(diǎn)擊monitor 查看bulid 狀態(tài)

3.2.5 查看cube情況

3.2.6 查詢cube

3.3 基于kafka構(gòu)建實(shí)時(shí)流cube

(1) 添加流數(shù)據(jù)源

(2) 創(chuàng)建kafka 的topic ,用于生產(chǎn)流數(shù)據(jù)

kafka-topics.sh --create --zookeeper node51:2181 --replication-factor 1 --partitions 1 --topic kylin_demo

(3) 通過(guò)topic生產(chǎn)數(shù)據(jù)

./kylin.sh org.apache.kylin.source.kafka.util.KafkaSampleProducer --topic kylin_demo --broker node51:6667 —delay 0

通過(guò)消費(fèi)端消費(fèi)數(shù)據(jù)(驗(yàn)證數(shù)據(jù)成功傳送)

./kylin.sh org.apache.kylin.source.kafka.util.KafkaSampleProducer --topic kylin_demo --broker node51:6667 —delay 0

(4) 構(gòu)建流數(shù)據(jù)schema

從消費(fèi)端截取一條樣例消息费就,粘貼到j(luò)son中诉瓦,kylin自動(dòng)解析schema表,并指定表名

(5) 指定kafka集群信息力细,及添加流數(shù)據(jù)topic

(6) 構(gòu)建cube類似于普通的hive表構(gòu)建(同上)

(7) Building cube

3.4 定時(shí)執(zhí)行cube build

Kylin web 觸發(fā)指令只能支持一次觸發(fā)睬澡,在實(shí)際應(yīng)用中,需要定時(shí)執(zhí)行build任務(wù)眠蚂,可以使用curl命令從后臺(tái)觸發(fā)cube的構(gòu)建煞聪,可以借助crontab 或者其他的調(diào)度工具

Eg:

*/20 * * * * curl -X PUT --user ADMIN:KYLIN -H "Content-Type: application/json;charset=utf-8" -d '{ "sourceOffsetStart": 0, "sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}' http://node51:7070/kylin/api/cubes/cube_kylin_kafka/build2

說(shuō)明:

(1) sourceOffsetStart 和sourceOffsetEnd指定了構(gòu)建的范圍,這里的offset是kylin的內(nèi)部概念逝慧,也支持kafka offset 來(lái)定義構(gòu)建的邊界昔脯。

(2) sourceOffsetStart=0 代表著從最近一次構(gòu)建成功的offset來(lái)繼續(xù)構(gòu)建,如果沒(méi)有值笛臣,則從kafka最早的offset開(kāi)始構(gòu)建

(3) sourceOffsetEnd=9223372036854775807 是long型的最大值云稚,標(biāo)識(shí)構(gòu)建會(huì)持續(xù)到當(dāng)下最新的offset

4. Kylin原理說(shuō)明

4.1 kylin 是一個(gè)開(kāi)源的分布式分析引擎,提供hadoop之上的sql查詢接口及多維分析捐祠,支持超大規(guī)模數(shù)據(jù)能力碱鳞。

4.2 cube

Cube是一種典型的多維數(shù)據(jù)分析技術(shù),一個(gè)CUBE可以有多個(gè)事實(shí)表踱蛀,多個(gè)維表構(gòu)成:

4.2.1 cube是維度的組合,任一維度的組合稱為cubeoid贵白,有N個(gè)維度的cube,那么就有2的n次方的維度組合

4.2.2 cube的構(gòu)建過(guò)程率拒,其實(shí)是將所有的維度組合事先計(jì)算,存儲(chǔ)在Hbase中禁荒,以空間交換時(shí)間猬膨,Htable對(duì)應(yīng)的rowkey,就是各種維度組合呛伴,指標(biāo)存在column中勃痴,這樣將不同維度組合的查詢sql,轉(zhuǎn)換成rowkey的范圍掃描热康,然后對(duì)指標(biāo)進(jìn)行匯總計(jì)算沛申。

4.2.3 kylin構(gòu)建cube過(guò)程

(1)根據(jù)cube定義的事實(shí)表和維表,在hive中生成一張臨時(shí)中間表

(2)使用mapreduce姐军,從事實(shí)表中抽取維度的distinct值铁材,并以字典樹(shù)的方式壓縮編碼尖淘,同時(shí)也對(duì)所有維度表進(jìn)行壓縮編碼,生成維度字典

(3)計(jì)算和統(tǒng)計(jì)所有的維度組合著觉,并保存

(4)創(chuàng)建Hbase table

(5)利用hive中間臨時(shí)表村生,使用mr,生成每種維度組合的數(shù)據(jù)饼丘,將其轉(zhuǎn)換為Hfile趁桃,并導(dǎo)入到Hbase table中

(6)更新cube信息,清理中間表

4.2.4 增量cubeing

Kylin使用了一種增量cubing技術(shù)來(lái)進(jìn)行cube數(shù)據(jù)的疊加肄鸽,kylin根據(jù)時(shí)間段劃分為多個(gè)segment镇辉,cube每次構(gòu)建都會(huì)生成一個(gè)新的segment,增量cubing依賴已有的cube segment,在segment數(shù)目到達(dá)一定數(shù)量后盡可能會(huì)進(jìn)行合并操作贴捡,合并成一個(gè)新的大的cube segment 來(lái)替代忽肛,Merge操作是一個(gè)異步的在線操作,不會(huì)對(duì)前端的查詢業(yè)務(wù)產(chǎn)生影響烂斋。

合并操作步驟:

(1) 遍歷指定的cube segment

(2) 合并維度字典目錄和維度表快照

(3) 利用mapreduce 合并各種維度組合cuboid

(4) 將cuboid轉(zhuǎn)換為Hfile ,生成新的Htable ,替代原來(lái)的多個(gè)Htable

5. 注意事項(xiàng)

5.1 事實(shí)表的準(zhǔn)備

Kylin只支持簡(jiǎn)單的聚合函數(shù)屹逛,sum,count等,盡量在hive中做好預(yù)處理汛骂。對(duì)于維表比較大的情況罕模,或者查詢的邏輯復(fù)雜判斷的,或者kylin不支持的語(yǔ)法的帘瞭,可以事先將事實(shí)表和維表管理處理創(chuàng)建為hive的視圖淑掌,之后根據(jù)視圖來(lái)創(chuàng)建cube模型。

5.2 cube構(gòu)建的高級(jí)設(shè)置

cube的計(jì)算量主要跟維度個(gè)數(shù)蝶念、維度基數(shù)緊密相關(guān)抛腕,盡量減少不必要的維度組合計(jì)算。

(1) Mandotary - 必需的維度:每次查詢必然要帶的條件建議在字典設(shè)置為Manadatory,故認(rèn)為所有的查詢都會(huì)包含有此維度媒殉,對(duì)于不包含此維度的組合担敌,在構(gòu)建cube時(shí)不會(huì)被計(jì)算,這樣最終build出來(lái)的cube的大小會(huì)減少一半廷蓉。

(2) Hierarchy - 層級(jí)維度:一些列具有層次關(guān)系的維度組成一個(gè)Hierachy全封,例如年,月桃犬,日等刹悴,如果不設(shè)置Hierachy,會(huì)形成各個(gè)維度的組合cuboid攒暇,設(shè)置了Hierachy后cuboid增加了一個(gè)約束土匀,那些不滿足層級(jí)的組合會(huì)被剪枝。

Eg:如果A, B, C是層級(jí)扯饶,并且A>B>C恒削,那么只需要計(jì)算組合A, AB, ABC; 其它組合如B, C, BC, AC將不做預(yù)計(jì)算池颈。

(3) Derived - 衍生維度:維度表的列值,可以從它的主鍵值衍生而來(lái)钓丰,那么通過(guò)將這些列定義為衍生維度躯砰,可以僅將主鍵加入到Cube的預(yù)計(jì)算來(lái),而在運(yùn)行時(shí)通過(guò)使用維度表的快照携丁,衍生出非PK列的值琢歇,從而起到降維的效果。

(4) Joint Dimensions

將維度進(jìn)行分組梦鉴,以達(dá)到降低維度組合數(shù)目的手段李茫,不同分組的維度之間不會(huì)進(jìn)行組合計(jì)算.將經(jīng)常一起出現(xiàn)的組合維度放在同一維度組中,將從不一起出現(xiàn)的維度設(shè)置在不同的維度組中肥橙。

Group分組的優(yōu)化措施與查詢sql習(xí)慣緊密依賴魄宏,即訂制優(yōu)化,如果查詢的維度是跨組的存筏,那么需要付出更大的代價(jià)來(lái)獲取結(jié)果

(4)cube中rowkey順序:按照查詢頻率從高到低宠互,從前往后排,Mandatory維度椭坚,Where過(guò)濾條件中出現(xiàn)頻率較多的維度予跌,高基數(shù)維度,低基數(shù)維度善茎。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末券册,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子垂涯,更是在濱河造成了極大的恐慌烁焙,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件集币,死亡現(xiàn)場(chǎng)離奇詭異考阱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鞠苟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秽之,“玉大人当娱,你說(shuō)我怎么就攤上這事】颊ィ” “怎么了跨细?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)河质。 經(jīng)常有香客問(wèn)我冀惭,道長(zhǎng)震叙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任散休,我火速辦了婚禮媒楼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戚丸。我一直安慰自己划址,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布限府。 她就那樣靜靜地躺著夺颤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胁勺。 梳的紋絲不亂的頭發(fā)上世澜,一...
    開(kāi)封第一講書(shū)人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音署穗,去河邊找鬼寥裂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蛇捌,可吹牛的內(nèi)容都是我干的抚恒。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼络拌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼俭驮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起春贸,我...
    開(kāi)封第一講書(shū)人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤混萝,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后萍恕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逸嘀,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年允粤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了崭倘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡类垫,死狀恐怖司光,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悉患,我是刑警寧澤残家,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站售躁,受9級(jí)特大地震影響坞淮,放射性物質(zhì)發(fā)生泄漏茴晋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一回窘、第九天 我趴在偏房一處隱蔽的房頂上張望诺擅。 院中可真熱鬧,春花似錦毫玖、人聲如沸掀虎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烹玉。三九已至,卻和暖如春阐滩,著一層夾襖步出監(jiān)牢的瞬間二打,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工掂榔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留继效,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓装获,卻偏偏與公主長(zhǎng)得像瑞信,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子穴豫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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