Apache Kylin是一個(gè)開(kāi)源的分布式分析引擎,提供Hadoop之上的SQL查詢(xún)接口及多維分析(OLAP)能力以支持超大規(guī)模數(shù)據(jù),最初由eBay公司開(kāi)發(fā)并貢獻(xiàn)至開(kāi)源社區(qū)。它能在亞秒內(nèi)查詢(xún)巨大的Hive表。
本書(shū)分為21章,詳細(xì)講解Apache Kylin概念、安裝、配置、部署,讓讀者對(duì)Apache Kylin構(gòu)建大數(shù)據(jù)分析平臺(tái)有一個(gè)感性認(rèn)識(shí)。同時(shí),本書(shū)從應(yīng)用角度,結(jié)合Dome和實(shí)例介紹了用于多維分析的Cube算法的創(chuàng)建、配置與優(yōu)化。最后還介紹了Kyligence公司發(fā)布KAP大數(shù)據(jù)分析平臺(tái),對(duì)讀者有極大的參考價(jià)值。
本書(shū)適合大數(shù)據(jù)技術(shù)初學(xué)者、大數(shù)據(jù)分析人員、大數(shù)據(jù)架構(gòu)師等,也適合用于高等院校和培訓(xùn)學(xué)校相關(guān)專(zhuān)業(yè)師生教學(xué)參考。
作者建立QQ群,免費(fèi)為讀者解決本書(shū)的任何問(wèn)題。Kyligence 聯(lián)合創(chuàng)始人兼CEO,Apache Kylin項(xiàng)目管理委員會(huì)主席(PMC Chair),韓卿;武漢市云升科技發(fā)展有限公司董事長(zhǎng),楊正洪;萬(wàn)達(dá)網(wǎng)絡(luò)科技集團(tuán)大數(shù)據(jù)中心副總經(jīng)理,《Spark高級(jí)數(shù)據(jù)分析》中文版譯者,龔少成等等業(yè)內(nèi)專(zhuān)家聯(lián)合推薦。
本書(shū)全面介紹Apache Kylin的書(shū)籍,包括環(huán)境搭建、案例實(shí)戰(zhàn)演示、源碼分析、Cube優(yōu)化等,此外還會(huì)涉及數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)模型、OLAP、數(shù)據(jù)立方體等方面的知識(shí)。通過(guò)本書(shū)系統(tǒng)性學(xué)習(xí)和實(shí)戰(zhàn)操作,朋友們將能夠達(dá)到基于Apache Kylin搭建企業(yè)級(jí)大數(shù)據(jù)分析平臺(tái),并熟練掌握使用Apache Kylin多維度地分析海量數(shù)據(jù),最終通過(guò)可視化工具展示結(jié)果。
自2011年下半年開(kāi)始,我就一直關(guān)注Apache開(kāi)源社區(qū),側(cè)重點(diǎn)放在大數(shù)據(jù)方面的成熟框架和產(chǎn)品。在這期間,陸續(xù)研究過(guò)Hadoop、Hive、HBase、Mahout、Kafka、Flume、Storm,以及近兩年很火的Spark和Flink等,和很多從事大數(shù)據(jù)的朋友一樣,經(jīng)歷過(guò)無(wú)數(shù)的夜晚,對(duì)著電腦屏幕逐行研究這些源代碼,同時(shí)也看到無(wú)數(shù)的開(kāi)源愛(ài)好者和技術(shù)專(zhuān)家加入Hadoop開(kāi)源社區(qū),貢獻(xiàn)自己的力量,日復(fù)一日,樂(lè)此不疲。
談起大數(shù)據(jù),不得不提Hadoop,如今其早已發(fā)展成為了大數(shù)據(jù)處理的事實(shí)標(biāo)準(zhǔn)。Hadoop誕生于2005年,其受到Google的兩篇論文(GFS和MapReduce)的啟發(fā)。起初,Hadoop只是用來(lái)支撐Nutch搜索引擎的項(xiàng)目,從2006年開(kāi)始,Hadoop脫離了Nutch,成為了Apache的頂級(jí)項(xiàng)目,無(wú)論是在學(xué)術(shù)界還是工業(yè)界都得到了迅猛的發(fā)展。
如今已是2016年了,Hadoop十周歲了,這十年期間圍繞其核心組件(HDFS、MapReduce、Yarn)陸續(xù)出現(xiàn)了一批工具,用來(lái)豐富Hadoop生態(tài)圈,解決大數(shù)據(jù)各方面的問(wèn)題,這其中就包括Apache Kylin。
ApacheKylin(麒麟)是由eBay 研發(fā)并貢獻(xiàn)給開(kāi)源社區(qū)的Hadoop上的分布式大規(guī)模聯(lián)機(jī)分析(OLAP)平臺(tái),它提供Hadoop之上的SQL查詢(xún)接口及多維分析能力以支持大規(guī)模數(shù)據(jù),能夠處理TB乃至PB級(jí)別的分析任務(wù),能夠在亞秒級(jí)查詢(xún)巨大的Hive表,并支持高并發(fā)。Apache Kylin于2014年10月開(kāi)源,并于當(dāng)年11月成為Apache孵化器項(xiàng)目,是eBay第一個(gè)貢獻(xiàn)給Apache軟件基金會(huì)的項(xiàng)目,也是第一個(gè)由中國(guó)團(tuán)隊(duì)完整貢獻(xiàn)到Apache的項(xiàng)目,在這里對(duì)Apache Kylin的中國(guó)團(tuán)隊(duì)表示感謝,感謝貢獻(xiàn)如此出色的大數(shù)據(jù)分析平臺(tái)。
從去年開(kāi)始接觸Apache Kylin,我感覺(jué)很親切,也很驚喜。當(dāng)前研究的版本為0.7.1,也就是Kylin加入Apache孵化器項(xiàng)目后的第一個(gè)Apache發(fā)行版本,雖然當(dāng)時(shí)的Kylin存在一些問(wèn)題,但是其基于Hadoop設(shè)計(jì)的框架還是很有創(chuàng)意和特色的。經(jīng)過(guò)一年多的發(fā)展,截至目前,Apache Kylin的版本已經(jīng)發(fā)展到1.5.3,并且從1.5版本開(kāi)始,Apache Kylin進(jìn)行了重構(gòu),支持可擴(kuò)展架構(gòu),支持更多的數(shù)據(jù)源、構(gòu)建引擎和存儲(chǔ)引擎,構(gòu)建算法不斷優(yōu)化,支持與更多的可視化工具集成等。
如今,Apache Kylin已被應(yīng)用在eBay、Exponential、京東、美團(tuán)、明略數(shù)據(jù)、網(wǎng)易及其他公司。越來(lái)越多的大數(shù)據(jù)團(tuán)隊(duì)開(kāi)始選擇Apache Kylin作為公司大數(shù)據(jù)分析平臺(tái)的組成部分,滿(mǎn)足其海量數(shù)據(jù)的多維指標(biāo)實(shí)時(shí)查詢(xún)分析。通過(guò)很多社區(qū)的交流分享,我發(fā)現(xiàn)不少朋友對(duì)Apache Kylin沒(méi)有一個(gè)整體的認(rèn)識(shí),在使用過(guò)程中出現(xiàn)各種各樣的問(wèn)題,打擊自信心,他們急切希望能有一本全面介紹Apache Kylin的書(shū)籍。因?yàn)槲医?jīng)常在博客和社區(qū)分享Apache Kylin實(shí)戰(zhàn)方面的一些經(jīng)驗(yàn),所以很多朋友鼓勵(lì)我能夠?qū)懸槐颈容^全面介紹Apache Kylin的書(shū)籍,幫助更多的愛(ài)好者更好地加入Apache Kylin的社區(qū),并在生產(chǎn)環(huán)境中進(jìn)行實(shí)踐。剛開(kāi)始比較猶豫,畢竟寫(xiě)書(shū)需要花費(fèi)大量的時(shí)間和精力,而且要對(duì)讀者負(fù)責(zé),容不得半點(diǎn)馬虎。后來(lái)有社區(qū)的幾個(gè)朋友給我打電話(huà)勸說(shuō),以及清華大學(xué)出版社的夏毓彥編輯一再鼓勵(lì),還有家人的支持,我就下定決心寫(xiě)這本書(shū),目的只有一個(gè),就是希望讀者能夠通過(guò)這本書(shū),對(duì)Apache Kylin有一個(gè)完整的認(rèn)識(shí),掌握各方面的技能,并最終應(yīng)用在自己公司的生產(chǎn)環(huán)境中。
本書(shū)內(nèi)容
這是一本全面介紹Apache Kylin的書(shū)籍,包括環(huán)境搭建、案例實(shí)戰(zhàn)演示、源碼分析、Cube優(yōu)化等,此外還會(huì)涉及數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)模型、OLAP、數(shù)據(jù)立方體等方面的知識(shí)。通過(guò)本書(shū)系統(tǒng)性學(xué)習(xí)和實(shí)戰(zhàn)操作,朋友們將能夠達(dá)到基于Apache Kylin搭建企業(yè)級(jí)大數(shù)據(jù)分析平臺(tái),并熟練掌握使用Apache Kylin多維度地分析海量數(shù)據(jù),最終通過(guò)可視化工具展示結(jié)果。
受眾人群
本書(shū)適合從事Hadoop、HBase、Hive和Kylin等方面工作的人員參考閱讀,最好能掌握一點(diǎn)OLAP、數(shù)據(jù)立方體等數(shù)據(jù)倉(cāng)庫(kù)方面的知識(shí)。但是我相信這本書(shū)也適合任何想從事大數(shù)據(jù)方面工作的程序員和架構(gòu)師。
代碼規(guī)范和下載
本書(shū)中會(huì)涉及大量的Linux Shell命令,這些命令都是在CentOS操作系統(tǒng)上執(zhí)行成功的,對(duì)于其他的一些Linux系統(tǒng)也同樣適用,如有不適用的,可以查閱資料,修改命令以符合對(duì)應(yīng)的操作系統(tǒng)。
要下載本書(shū)章節(jié)中的樣例代碼,請(qǐng)下載。
讀者服務(wù)
由于本人的寫(xiě)作能力有限,可能有些章節(jié)內(nèi)容考慮并不全面,或者版本升級(jí)導(dǎo)致某些章節(jié)部分內(nèi)容不是最新的。為了更好地為讀者服務(wù),我特意建立了一個(gè)QQ群,讀者有關(guān)本書(shū)的任何問(wèn)題,我都會(huì)及時(shí)給朋友們答復(fù),謝謝支持。
致謝
這本書(shū)的面世,得到了很多朋友的鼎力相助,在這里感謝所有幫助我完成這本書(shū)的人。
感謝公司的同事們,特別感謝項(xiàng)同德和萬(wàn)文兵兩位項(xiàng)目經(jīng)理給予的支持和鼓勵(lì),感謝施健健給予的技術(shù)支持和幫助。
感謝CSDN和cnblogs博客中優(yōu)秀的文章給予的技術(shù)支持。
感謝清華大學(xué)出版社所有為本書(shū)的出版和發(fā)行付出了辛勤勞動(dòng)的人們。
最后,我要感謝我的家人,給予我的不懈支持。感謝父母幫我們照顧調(diào)皮搗蛋的寶寶;感謝妻子一如既往地照顧我的生活,給予我充足的時(shí)間用來(lái)寫(xiě)作。沒(méi)有家人的支持和照顧,我是不可能完成這本書(shū)。
作者
2016年10月
第一部分 Apache Kylin基礎(chǔ)部分
第1章 Apache Kylin前世今生 3
1.1 Apache Kylin的背景 3
1.2 Apache Kylin的應(yīng)用場(chǎng)景 3
1.3 Apache Kylin的發(fā)展歷程 4
第2章 Apache Kylin前奏 7
2.1 事實(shí)表和維表 7
2.2 星型模型和雪花型模型 7
2.2.1 星型模型 7
2.2.2 雪花型模型 8
2.2.3 星型模型示例 8
2.3 OLAP 9
2.3.1 OLAP分類(lèi) 9
2.3.2 OLAP的基本操作 10
2.4 數(shù)據(jù)立方體(Data Cube) 11
第3章 Apache Kylin 工作原理和體系架構(gòu) 12
3.1 Kylin工作原理 12
3.2 Kylin體系架構(gòu) 13
3.3 Kylin中的核心部分:Cube構(gòu)建 15
3.4 Kylin的SQL查詢(xún) 16
3.5 Kylin的特性和生態(tài)圈 16
第4章 搭建CDH大數(shù)據(jù)平臺(tái) 18
4.1 系統(tǒng)環(huán)境和安裝包 19
4.1.1 系統(tǒng)環(huán)境 19
4.1.2 安裝包的下載 20
4.2 準(zhǔn)備工作:系統(tǒng)環(huán)境搭建 21
4.2.1 網(wǎng)絡(luò)配置(CDH集群所有節(jié)點(diǎn)) 21
4.2.2 打通SSH,設(shè)置ssh無(wú)密碼登錄(所有節(jié)點(diǎn)) 21
4.3 正式安裝CDH:準(zhǔn)備工作 29
4.4 正式安裝CDH5:安裝配置 30
4.4.1 CDH5的安裝配置 30
4.4.2 對(duì)Hive、HBase執(zhí)行簡(jiǎn)單操作 39
第5章 使用Kylin構(gòu)建企業(yè)大數(shù)據(jù)分析平臺(tái)的4種部署方式 41
5.1 Kylin部署的架構(gòu) 41
5.2 Kylin的四種典型部署方式 42
第6章 單獨(dú)為Kylin部署HBase集群 44
第7章 部署Kylin集群環(huán)境 58
7.1 部署Kylin的先決條件 58
7.2 部署Kylin集群環(huán)境 61
7.3 為Kylin集群搭建負(fù)載均衡器 70
7.3.1 搭建Nginx環(huán)境 70
7.3.2 配置Nginx實(shí)現(xiàn)Kylin的負(fù)載均衡 73
第二部分 Apache Kylin 進(jìn)階部分
第8章 Demo案例實(shí)戰(zhàn) 77
8.1 Sample Cube案例描述 77
8.2 Sample Cube案例實(shí)戰(zhàn) 78
8.2.1 準(zhǔn)備數(shù)據(jù) 78
8.2.2 構(gòu)建Cube 81
第9章 多維分析的Cube創(chuàng)建實(shí)戰(zhàn) 89
9.1 Cube模型 89
9.2 創(chuàng)建Cube的流程 90
9.2.1 步驟一:Hive中事實(shí)表,以及多張維表的處理 90
9.2.2 步驟二:Kylin中建立項(xiàng)目(Project) 95
9.2.3 步驟三:Kylin中建立數(shù)據(jù)源(Data Source) 95
9.2.4 步驟四:Kylin中建立數(shù)據(jù)模型(Model) 98
9.2.5 步驟五:Kylin中建立Cube 104
9.2.6 步驟六:Build Cube 114
9.2.7 步驟七:查詢(xún)Cube 118
第10章 Build Cube的來(lái)龍去脈 120
10.1 流程分析 120
10.2 小結(jié) 134
第三部分 Apache Kylin 高級(jí)部分
第11章 Cube優(yōu)化 137
第12章 備份Kylin的Metadata 142
12.1 Kylin的元數(shù)據(jù) 142
12.2 備份元數(shù)據(jù) 143
12.3 恢復(fù)元數(shù)據(jù) 146
第13章 使用Hive視圖 147
13.1 使用Hive視圖 147
13.2 使用視圖實(shí)戰(zhàn) 149
第14章 Kylin的垃圾清理 153
14.1 清理元數(shù)據(jù) 153
14.2 清理存儲(chǔ)器數(shù)據(jù) 154
第15章 JDBC訪(fǎng)問(wèn)方式 157
第16章 通過(guò)RESTful訪(fǎng)問(wèn)Kylin 161
第17章 Kylin版本之間升級(jí) 179
17.1 從1.5.2升級(jí)到最新版本1.5.3 179
17.2 從1.5.1升級(jí)到1.5.2版本 180
17.3 從Kylin 1.5.2.1升級(jí)到Kylin 1.5.3實(shí)戰(zhàn) 181
17.4 補(bǔ)充內(nèi)容 187
第18章 大數(shù)據(jù)可視化實(shí)踐 189
18.1 可視化工具簡(jiǎn)述 189
18.2 安裝Kylin ODBC驅(qū)動(dòng) 190
18.3 通過(guò)Excel訪(fǎng)問(wèn)Kylin 192
18.4 通過(guò)Power BI訪(fǎng)問(wèn)Kylin 194
18.4.1 安裝配置Power BI 194
18.4.2 實(shí)戰(zhàn)操作 198
18.5 通過(guò)Tableau訪(fǎng)問(wèn)Kylin 199
18.6 Kylin + Mondrian + Saiku 205
18.7 實(shí)戰(zhàn)演練:通過(guò)Saiku訪(fǎng)問(wèn)Kylin 211
18.7.1 第一個(gè)Schema例子:myproject_pvuv_cube的演示 211
18.7.2 第二個(gè)Schema例子:kylin_sales_cube的演示 219
18.7.3 Saiku使用的一些問(wèn)題 223
18.8 通過(guò)Apache Zepplin訪(fǎng)問(wèn)Kylin 229
18.9 通過(guò)Kylin的“Insight”查詢(xún) 232
第19章 使用Streaming Table 構(gòu)建準(zhǔn)實(shí)時(shí)Cube 236
第20章 快速數(shù)據(jù)立方算法 251
20.1 快速數(shù)據(jù)立方算法概述 251
20.2 快速數(shù)據(jù)立方算法優(yōu)點(diǎn)和缺點(diǎn) 253
20.3 獲取Fast Cubing算法的優(yōu)勢(shì) 254
第四部分 Apache Kylin的擴(kuò)展部分
第21章 大數(shù)據(jù)智能分析平臺(tái)KAP 257
21.1 大數(shù)據(jù)智能分析平臺(tái)KAP概述 257
21.2 KAP的安裝部署 259