Apache Kylin權(quán)威指南(第2版)
定 價:99 元
- 作者:Apache Kylin核心團(tuán)隊
- 出版時間:2019/8/1
- ISBN:9787111633297
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP368.5-62
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書由Apache Kylin核心開發(fā)團(tuán)隊編寫,近兩年Apache Kylin隨著社區(qū)持續(xù)貢獻(xiàn)的熱度和在不同領(lǐng)域業(yè)務(wù)場景的深入實踐應(yīng)用,新的功能和特性不斷涌現(xiàn),這樣就迫切需要更新內(nèi)容來滿足廣大Apache Kylin 的使用者和關(guān)注人群的需要。本書從Apache Kylin的架構(gòu)和設(shè)計,各個模塊的使用,與第三方的整合,二次開發(fā)以及開源實踐等各個方面進(jìn)行講解,為各位讀者呈現(xiàn)*核心的設(shè)計理念和哲學(xué)、算法和技術(shù)等。
“麒麟出沒,必有祥瑞!
—中國古諺語
“與Apache Kylin團(tuán)隊一起合作使Kylin孵化成為頂級項目對我而言非常激動人心,Kylin在技術(shù)方面當(dāng)然是振奮人心的,但同樣令人興奮的是Kylin 代表了亞洲國家,特別是中國,在開源社區(qū)中越來越高的參與度!
—Ted Dunning Apache 孵化項目副總裁,MapR 首席應(yīng)用架構(gòu)師
今天,隨著移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、AI等各種技術(shù)的快速興起,數(shù)據(jù)成了所有這些技術(shù)背后最重要,也是最有價值的“資產(chǎn)”。如何從數(shù)據(jù)中獲得有價值的信息呢?這個問題驅(qū)動了相關(guān)技術(shù)的發(fā)展,從最初的基于文件的檢索、分析程序,到數(shù)據(jù)倉庫理念的誕生,再到基于數(shù)據(jù)庫的商業(yè)智能分析。而現(xiàn)在,我們關(guān)注的問題已經(jīng)變成如何從海量的超大規(guī)模數(shù)據(jù)中快速獲取有價值的信息。在新的時代,面對新的挑戰(zhàn),新的技術(shù)必然會應(yīng)運(yùn)而生。
在數(shù)據(jù)分析領(lǐng)域,大部分的技術(shù)都誕生在國外,特別是美國,從最初的數(shù)據(jù)庫,到Hadoop為首的大數(shù)據(jù)技術(shù),再到今天各種深度學(xué)習(xí)、AI等。但我國卻又擁有世界上獨(dú)一無二的“大”數(shù)據(jù)—最多的人口、最多的移動設(shè)備、最活躍的應(yīng)用市場、最復(fù)雜的網(wǎng)絡(luò)環(huán)境……面對這些挑戰(zhàn),我們需要有自己的核心技術(shù),特別是在基礎(chǔ)領(lǐng)域的突破和研發(fā)。今天,以Apache Kylin為首的各種來自中國的先進(jìn)技術(shù)不斷涌現(xiàn),甚至在很多方面都大大超越了來自國外的其他技術(shù),彰顯了中國的技術(shù)實力。
自Hadoop選取大象圖標(biāo)伊始,上百個項目,以動物居之者為多。而其中唯有Apache Kylin(麒麟)來自中國,在眾多項目中分外突出。在全球最大的開源基金會—Apache 軟件基金會(Apache Software Foundation,ASF)的160多個頂級項目中,Apache Kylin是唯一一個來自中國的Apache頂級開源項目,與Apache Hadoop、Apache Spark、Apache Kafka、Apache Tomcat、Apache Struts、Apache Maven等頂級項目一起以“The Apache Way”構(gòu)建開源大數(shù)據(jù)領(lǐng)域的國際社區(qū),發(fā)展新技術(shù)并拓展生態(tài)系統(tǒng)。
大數(shù)據(jù)與傳統(tǒng)技術(shù)的最大區(qū)別就在于數(shù)據(jù)的體量給查詢帶來的巨大挑戰(zhàn)。從最早使用大數(shù)據(jù)技術(shù)來做批量處理,到現(xiàn)在越來越多的人要求大數(shù)據(jù)平臺也能夠如傳統(tǒng)數(shù)據(jù)倉庫技術(shù)一樣支持交互式分析,隨著數(shù)據(jù)量的不斷膨脹、數(shù)據(jù)平民化的不斷推進(jìn),低延遲、高并發(fā)地在Hadoop之上提供標(biāo)準(zhǔn)SQL查詢能力成為必須攻破的技術(shù)難題。而Apache Kylin的誕生正是基于這個背景,并成功地完成了很多人認(rèn)為不可能實現(xiàn)的突破。Apache Kylin最初誕生于eBay中國研發(fā)中心,該中心坐落于上海浦東新區(qū)。2013年9月底該研發(fā)中心開始進(jìn)行POC測試并組建團(tuán)隊,經(jīng)過一年的艱苦開發(fā)和測試,Apache Kylin于2014年9月30日正式上線,并在第二天,2014年10月1日,正式開源。
在這個過程中,面對使用何種技術(shù)、如何設(shè)計架構(gòu)、如何突破那些看似無法完成的挑戰(zhàn)等一系列技術(shù)難關(guān),整個開發(fā)團(tuán)隊和用戶一起經(jīng)歷了一個艱難的過程。今天呈現(xiàn)的Apache Kylin已經(jīng)經(jīng)歷了上千億甚至上萬億規(guī)模數(shù)據(jù)量的分析請求及上百家公司在實際生產(chǎn)環(huán)境中的檢驗,成為各個公司大數(shù)據(jù)分析平臺不可替代的重要組成部分。本書將從Apache Kylin的架構(gòu)和設(shè)計、各個模塊的使用、與第三方的整合、二次開發(fā)以及開源實踐等多個方面進(jìn)行講解,為讀者呈現(xiàn)Apache Kylin最核心的設(shè)計理念和哲學(xué)、算法和技術(shù)等。
Apache Kylin社區(qū)的發(fā)展來之不易,自2014年10月開源至今已經(jīng)有近五年的時間,從最初的幾個研發(fā)人員發(fā)展到今天幾十個貢獻(xiàn)者、國內(nèi)外上百家公司正式使用、連續(xù)兩年獲得InfoWorld Bossie Awards最佳開源大數(shù)據(jù)工具獎。來自Apache Kylin核心團(tuán)隊、貢獻(xiàn)者、用戶、導(dǎo)師、基金會等的幫助和無私奉獻(xiàn)鑄就了今天Apache Kylin活躍的社區(qū),也使得此項技術(shù)得以在越來越多的場景下發(fā)揮作用。現(xiàn)在,由Apache Kylin核心團(tuán)隊撰寫的本書即將出版,相信能更好地將相關(guān)的理論、設(shè)計、技術(shù)、架構(gòu)等展現(xiàn)給各位朋友,希望能夠讓更多的朋友更加充分地理解Kylin的優(yōu)勢和適用的場景,更多地挖掘出Kylin的潛力。同時希望本書能夠鼓勵并吸引更多的人參與到Kylin項目和開源項目中,能夠影響更多的人貢獻(xiàn)更多的項目和技術(shù)到開源世界中。
此次《Apache Kylin 權(quán)威指南》的再版工作,得到了Kyligence研發(fā)團(tuán)隊的大力支持,他們紛紛自愿參與,本書大部分內(nèi)容的寫作是利用節(jié)假日和休息時間完成的,每位參與者都將自己在工作中獲得的最佳實踐經(jīng)驗總結(jié)到了這本書中,他們分別是:史少鋒、陳志雄、馮禮、翟娜、湯雪、趙勇杰、周浥塵、龍超、宗正、孫宇婕、周丁倩、李森輝等。在此對他們表示誠摯的感謝!
韓卿
Apache Kylin聯(lián)合創(chuàng)建者及項目委員會主席
2019年5月
推薦序
前 言
第1章 Apache Kylin概述1
1.1 背景和歷史1
1.2 Apache Kylin的使命3
1.2.1 為什么要使用Apache Kylin3
1.2.2 Apache Kylin怎樣解決關(guān)鍵問題4
1.3 Apache Kylin的工作原理5
1.3.1 維度和度量簡介5
1.3.2 Cube和Cuboid6
1.3.3 工作原理7
1.4 Apache Kylin的技術(shù)架構(gòu)7
1.5 Apache Kylin的主要特點(diǎn)9
1.5.1 標(biāo)準(zhǔn)SQL接口9
1.5.2 支持超大數(shù)據(jù)集10
1.5.3 亞秒級響應(yīng)10
1.5.4 可伸縮性和高吞吐率10
1.5.5 BI及可視化工具集成11
1.6 與其他開源產(chǎn)品的比較11
1.7 小結(jié)13
第2章 快速入門 14
2.1 核心概念 14
2.1.1 數(shù)據(jù)倉庫、OLAP與BI14
2.1.2 維度建模15
2.1.3 事實表和維度表16
2.1.4 維度和度量16
2.1.5 Cube、Cuboid和Cube Segment16
2.2 在Hive中準(zhǔn)備數(shù)據(jù) 17
2.2.1 多維數(shù)據(jù)模型17
2.2.2 維度表的設(shè)計 17
2.2.3 Hive表分區(qū) 18
2.2.4 了解維度的基數(shù) 18
2.2.5 樣例數(shù)據(jù)18
2.3 安裝和啟動Apache Kylin19
2.3.1 環(huán)境準(zhǔn)備19
2.3.2 必要組件19
2.3.3 啟動Apache Kylin19
2.4 設(shè)計Cube 19
2.4.1 導(dǎo)入Hive表定義19
2.4.2 創(chuàng)建數(shù)據(jù)模型21
2.4.3 創(chuàng)建Cube23
2.5 構(gòu)建Cube 32
2.5.1 全量構(gòu)建和增量構(gòu)建34
2.5.2 歷史數(shù)據(jù)刷新35
2.5.3 合并36
2.6 查詢Cube 38
2.6.1 Apache Kylin查詢介紹38
2.6.2 查詢下壓40
2.7 SQL參考 41
2.8 小結(jié)41
第3章 Cube優(yōu)化42
3.1 Cuboid剪枝優(yōu)化42
3.1.1 維度的組合42
3.1.2 檢查Cuboid數(shù)量43
3.1.3 檢查Cube大小45
3.1.4 空間與時間的平衡46
3.2 剪枝優(yōu)化工具47
3.2.1 使用衍生維度47
3.2.2 聚合組49
3.2.3 必需維度51
3.2.4 層級維度51
3.2.5 聯(lián)合維度52
3.3 并發(fā)粒度優(yōu)化54
3.4 Rowkey優(yōu)化55
3.4.1 調(diào)整Rowkey順序55
3.4.2 選擇合適的維度編碼56
3.4.3 按維度分片57
3.5 Top_N度量優(yōu)化58
3.6 Cube Planner優(yōu)化61
3.7 其他優(yōu)化62
3.7.1 降低度量精度62
3.7.2 及時清理無用Segment63
3.8 小結(jié)63
第4章 增量構(gòu)建64
4.1 為什么要增量構(gòu)建64
4.2 設(shè)計增量Cube66
4.2.1 設(shè)計增量Cube的條件66
4.2.2 增量Cube的創(chuàng)建67
4.3 觸發(fā)增量構(gòu)建69
4.3.1 Web GUI觸發(fā)69
4.3.2 構(gòu)建相關(guān)的REST API70
4.4 管理Cube碎片76
4.4.1 合并Segment76
4.4.2 自動合并77
4.4.3 保留Segment79
4.4.4 數(shù)據(jù)持續(xù)更新79
4.5 小結(jié)80
第5章 查詢和可視化81
5.1 Web GUI81
5.1.1 查詢81
5.1.2 顯示結(jié)果82
5.2 REST API84
5.2.1 查詢認(rèn)證85
5.2.2 查詢請求參數(shù)85
5.2.3 查詢返回結(jié)果86
5.3 ODBC87
5.4 JDBC90
5.4.1 獲得驅(qū)動包90
5.4.2 認(rèn)證90
5.4.3 URL格式90
5.4.4 獲取元數(shù)據(jù)信息91
5.5 Tableau集成91
5.5.1 連接Kylin數(shù)據(jù)源92
5.5.2 設(shè)計數(shù)據(jù)模型93
5.5.3 “Live”連接93
5.5.4 自定義SQL94
5.5.5 可視化展現(xiàn)94
5.5.6 發(fā)布到Tableau Server95
5.6 Zeppelin集成95
5.6.1 Zeppelin架構(gòu)簡介95
5.6.2 KylinInterpreter的工作原理96
5.6.3 如何使用Zeppelin訪問Kylin96
5.7 Superset 集成98
5.7.1 下載Kylinpy98
5.7.2 安裝Superset99
5.7.3 在Superset中添加Kylin Database100
5.7.4 在Superset中添加Kylin Table100
5.7.5 在Superset中創(chuàng)建圖表103
5.7.6 在Superset中通過SQL Lab探索Kylin105
5.8 QlikView 集成106
5.8.1 連接Kylin數(shù)據(jù)源106
5.8.2 “Direct Query”連接107
5.8.3 創(chuàng)建可視化109
5.8.4 發(fā)布到QlikView Server110
5.9 Qlik Sense集成110
5.9.1 連接Kylin數(shù)據(jù)源110
5.9.2 “Direct Query”連接112
5.9.3 創(chuàng)建可視化114
5.9.4 發(fā)布到Qlik Sense Hub115
5.9.5 在Qlik Sense Hub中連接Kylin數(shù)據(jù)源117
5.10 Redash集成118
5.10.1 連接Kylin數(shù)據(jù)源118
5.10.2 新建查詢119
5.10.3 新建儀表盤121
5.11 MicroStrategy 集成122
5.11.1 創(chuàng)建數(shù)據(jù)庫實例123
5.11.2 導(dǎo)入邏輯表124
5.11.3 創(chuàng)建屬性、事實和度量124
5.11.4 創(chuàng)建報告124
5.11.5 MicroStrategy連接Kylin最佳實踐126
5.12 小結(jié)127
第6章 Cube Planner及儀表盤128
6.1 Cube Planner128
6.1.1 為什么要引入Cube Planner128
6.1.2 Cube Planner 算法介紹129
6.1.3 使用Cube Planner131
6.2 System Cube134
6.2.1 開啟System Cube134
6.2.2 構(gòu)建和更新System Cube135
6.3 儀表盤135
6.4 小結(jié)137
第7章 流式構(gòu)建138
7.1 為什么要進(jìn)行流式構(gòu)建139
7.2 準(zhǔn)備流式數(shù)據(jù)139
7.2.1 數(shù)據(jù)格式139
7.2.2 消息隊列140
7.2.3 創(chuàng)建Schema141
7.3 設(shè)計流式Cube144
7.3.1 創(chuàng)建Model144
7.3.2 創(chuàng)建Cube145
7.4 流式構(gòu)建原理147
7.5 觸發(fā)流式構(gòu)建150
7.5.1 單次觸發(fā)構(gòu)建151
7.5.2 自動化多次觸發(fā)152
7.5.3 初始化構(gòu)建起點(diǎn)152
7.5.4 其他操作153
7.5.5 出錯處理153
7.6 小結(jié)154
第8章 使用Spark155
8.1 為什么要引入Apache Spark155
8.2 Spark構(gòu)建原理156
8.3 使用Spark構(gòu)建Cube158
8.3.1 配置Spark引擎1