産品特色
內容簡介
本書分為三篇。第壹篇:從整體上給齣數據大圖和數據平颱大圖,主要介紹數據的主要流程、各個流程的關鍵技術、數據的主要從業者及他們的職責等;數據平颱大圖分離綫和實時分彆給齣數據平颱架構、關鍵數據概念和技術等;第二篇:介紹離綫數據開發的主要技術,包含Hadoop、Hive、維度建模等,另外此部分還將綜閤上述各種離綫技術給齣離綫數據處理實戰;第三篇:集中介紹實時數據處理的各項技術,包含Storm、SparkSteaming、Flink、Beam等。
目錄
目 錄?Contents
前言
第一篇 數據大圖和數據平颱大圖
第1章 數據大圖 2
1.1 數據流程 2
1.1.1 數據産生 3
1.1.2 數據采集和傳輸 5
1.1.3 數據存儲處理 6
1.1.4 數據應用 7
1.2 數據技術 8
1.2.1 數據采集傳輸主要技術 9
1.2.2 數據處理主要技術 10
1.2.3 數據存儲主要技術 12
1.2.4 數據應用主要技術 13
1.3 數據相關從業者和角色 14
1.3.1 數據平颱開發、運維工程師 14
1.3.2 數據開發、運維工程師 15
1.3.3 數據分析工程師 15
1.3.4 算法工程師 16
1.3.5 業務人員 16
1.4 本章小結 17
第2章 數據平颱大圖 18
2.1 離綫數據平颱的架構、技術和設計 19
2.1.1 離綫數據平颱的整體架構 19
2.1.2 數據倉庫技術 20
2.1.3 數據倉庫建模技術 23
2.1.4 數據倉庫邏輯架構設計 26
2.2 實時數據平颱的架構、技術和設計 27
2.2.1 實時數據平颱的整體架構 28
2.2.2 流計算技術 29
2.2.3 主要流計算開源框架 29
2.3 數據管理 32
2.3.1 數據探查 32
2.3.2 數據集成 33
2.3.3 數據質量 33
2.3.4 數據屏蔽 34
2.4 本章小結 35
第二篇 離綫數據開發:大數據開發的主戰場
第3章 Hadoop原理實踐 38
3.1 開啓大數據時代的Hadoop 38
3.2 HDFS和MapReduce優缺點分析 40
3.2.1 HDFS 41
3.2.2 MapReduce 42
3.3 HDFS和MapReduce基本架構 43
3.4 MapReduce內部原理實踐 46
3.4.1 MapReduce邏輯開發 46
3.4.2 MapReduce任務提交詳解 47
3.4.3 MapReduce內部執行原理詳解 48
3.5 本章小結 52
第4章 Hive原理實踐 53
4.1 離綫大數據處理的主要技術:Hive 53
4.1.1 Hive齣現背景 53
4.1.2 Hive基本架構 55
4.2 Hive SQL 56
4.2.1 Hive 關鍵概念 57
4.2.2 Hive 數據庫 59
4.2.3 Hive 錶DDL 60
4.2.4 Hive錶DML 63
4.3 Hive SQL執行原理圖解 65
4.3.1 select 語句執行圖解 66
4.3.2 group by語句執行圖解 67
4.3.3 join語句執行圖解 69
4.4 Hive函數 73
4.5 其他SQL on Hadoop技術 74
4.6 本章小結 76
第5章 Hive優化實踐 77
5.1 離綫數據處理的主要挑戰:數據傾斜 77
5.2 Hive優化 79
5.3 join無關的優化 79
5.3.1 group by引起的傾斜優化 79
5.3.2 count distinct優化 80
5.4 大錶join小錶優化 80
5.5 大錶join大錶優化 82
5.5.1 問題場景 82
5.5.2 方案1:轉化為mapjoin 83
5.5.3 方案2:join時用case when語句 84
5.5.4 方案3:倍數B錶,再取模join 84
5.5.5 方案4:動態一分為二 87
5.6 本章小結 89
第6章 維度建模技術實踐 90
6.1 大數據建模的主要技術:維度建模 90
6.1.1 維度建模關鍵概念 91
6.1.2 維度建模一般過程 95
6.2 維度錶設計 96
6.2.1 維度變化 96
6.2.2 維度層次 99
6.2.3 維度一緻性 100
6.2.4 維度整閤和拆分 101
6.2.5 維度其他 102
6.3 深入事實錶 104
6.3.1 事務事實錶 104
6.3.2 快照事實錶 106
6.3.3 纍計快照事實錶 107
6.3.4 無事實的事實錶 108
6.3.5 匯總的事實錶 108
6.4 大數據的維度建模實踐 109
6.4.1 事實錶 109
6.4.2 維度錶 110
6.5 本章小結 110
第7章 Hadoop數據倉庫開發實戰 111
7.1 業務需求 112
7.2 Hadoop數據倉庫架構設計 113
7.3 Hadoop數據倉庫規範設計 114
7.3.1 命名規範 115
7.3.2 開發規範 115
7.3.3 流程規範 116
7.4 FutureRetailer數據倉庫構建實踐 118
7.4.1 商品維度錶 118
7.4.2 銷售事實錶 120
7.5 數據平颱新架構——數據湖 121
7.6 本章小結 123
第三篇 實時數據開發:大數據開發的未來
第8章 Storm流計算開發 127
8.1 流計算技術的鼻祖:Storm技術 128
8.1.1 Storm基本架構 129
8.1.2 Storm關鍵概念 130
8.1.3 Storm並發 132
8.1.4 Storm核心類和接口 133
8.2 Storm實時開發示例 133
8.2.1 語句生成spout 134
8.2.2 語句分割bolt 135
8.2.3 單詞計數bolt 136
8.2.4 上報bolt 136
8.2.5 單詞計數topology 137
8.2.6 單詞計數並發配置 139
8.3 Storm高級原語Trident 142
8.3.1 Trident引入背景 142
8.3.2 Trident基本思路 142
8.3.3 Trident流操作 143
8.3.4 Trident的實時開發實例 145
8.4 Storm關鍵技術 147
8.4.1 spout的可靠性 147
8.4.2 bolt的可靠性 148
8.4.3 Storm反壓機製 149
8.5 本章小結 150
第9章 Spark Streaming流計算開發 151
9.1 Spark生態和核心概念 151
9.1.1 Spark概覽 151
9.1.2 Spark核心概念 153
9.1.3 Spark生態圈 157
9.2 Spark生態的流計算技術:Spark Streaming 158
9.2.1 Spark Streaming基本原理 159
9.2.2 Spark Streaming核心API 159
9.3 Spark Streaming的實時開發示例 161
9.4 Spark Streaming調優實踐 162
9.5 Spark Streaming關鍵技術 164
9.5.1 Spark Streaming可靠性語義 164
9.5.2 Spark Streaming反壓機製 165
9.6 本章小結 166
第10章 Flink流計算開發 167
10.1 流計算技術新貴:Flink 167
10.1.1 Flink技術棧 168
10.1.2 Flink關鍵概念和基本原理 169
10.2 Flink API 172
10.2.1 API概覽 172
10.2.2 DataStream API 173
10.3 Flink實時開發示例 180
10.4 Flink關鍵技術詳解 182
10.4.1 容錯機製 182
10.4.2 水位綫 184
10.4.3 窗口機製 185
10.4.4 撤迴 187
10.4.5 反壓機製 187
10.5 本章小結 188
第11章 Beam技術 189
11.1 意圖一統流計算的Beam 190
11.1.1 Beam的産生背景 190
11.1.2 Beam技術 191
11.2 Beam技術核心:Beam Model 193
11.3 Beam SDK 196
11.3.1 關鍵概念 196
11.3.2 Beam SDK 197
11.4 Beam窗口詳解 202
11.4.1 窗口基礎 202
11.4.2 水位綫與延遲數據 203
11.4.3 觸發器 204
11.5 本章小結 205
第12章 Stream SQL實時開發實戰 206
12.1 流計算SQL原理和架構 207
12.2 流計算SQL:未來主要的實時開發技術 208
12.3 Stream SQL 209
12.3.1 Stream SQL源錶 209
12.3.2 Stream SQL結果錶 209
12.3.3 Stream SQL維度錶 210
12.3.4 Stream SQL臨時錶 211
12.3.5 Stream SQL DML 211
12.4 Stream SQL的實時開發實戰 212
12.4.1 select操作 212
12.4.2 join操作 214
12.4.3 聚閤操作 218
12.5 撤迴機製 221
12.6 本章小結 222
參考文獻 224
前言/序言
Preface前 言為什麼要寫這本書念念不忘,終有迴響。
撰寫一本數據開發相關書的念頭始於筆者學習數據知識的早期,當時筆者遍尋市麵上所有的數據書籍,卻沒有發現一本係統化且從項目實踐角度突齣重點的數據開發書籍。
筆者非常理解某領域初學者的苦衷,對於他們來說,最重要的不是具體的API、安裝教程等,而是先找到該領域的知識圖譜,有瞭它,就可按圖索驥,有針對性地去學。
對於大數據技術來說,上述需求更甚。一方麵,由於社區、商業甚至個人原因,大數據的技術可以說是五花八門、琳琅滿目,初學者非常容易不知所措,不知從哪裏下手。另一方麵,從理論上來說,互聯網上幾乎可以查到所有的大數據技術,比如在百度上搜索、問知乎,但這些都是碎片化的知識,不成體係,初學者需要先建立自己的大數據知識架構,再進一步深入。
本書正是基於這樣的初衷撰寫的,旨在幫助和加快初學者建立大數據開發領域知識圖譜的過程,帶領初學者更快地瞭解這片領域,而無須花更長的時間自己去摸索。
當然,未來是DT(Data Technology)時代,隨著人工智能、大數據、雲計算的崛起,未來數據將起到關鍵的作用,數據將成為如同水、電、煤一樣的基礎設施。但是,實際上目前數據的價值還遠遠沒有得到充分的挖掘,如醫療數據、生物基因數據、交通物流數據、零售數據等。所以筆者非常希望本書能夠對各個業務領域的業務分析人員、分析師、算法工程師等有所幫助,讓他們更快地熟悉和掌握數據的加工處理知識與技巧,從而能夠更好、更快地分析、挖掘和應用數據,讓數據産生更多、更大的價值。
通過閱讀本書,讀者能建立自己的大數據開發知識體係和圖譜,掌握數據開發的各種技術(包括有關概念、原理、架構以及實際的開發和優化技巧等),並能對實際項目中的數據開發提供指導和參考。
大數據技術日新月異,由於篇幅和時間限製,書中僅講述瞭當前主要和主流的數據相關技術,如果讀者對大數據開發有興趣,本書將是首選的入門讀物。
本書特色本書從實際項目實踐齣發,專注、完整、係統化地講述數據開發技術,此處的數據開發技術包括離綫數據處理技術、實時數據處理技術、數據開發優化、大數據建模、數據分層體係建設等。
我們處於一個信息過度的時代,互聯網涵蓋瞭人類有史以來的所有知識,浩如煙海。對大數據開發技術來說,更是如此。那麼,大數據相關人員如何吸收、消化、應用和擴展自己的技術知識?如何把握相關的大數據技術深度和廣度?深入到何種程度?涉獵到何種範圍?這是很有意思的問題。筆者認為最重要的是找到錨點,而本書的錨點就是數據開發技術。所以本書的另一個特點是以數據開發實戰作為錨點,來組織、介紹各種數據開發技術,包括各種數據處理技術的深度和廣度把握等。比如在離綫數據處理中,目前事實的處理標準是Hive,實際項目中開發者已經很少自己寫Hadoop MapReduce程序來進行大數據處理,那是不是說MapRedue和HDFS就不需要掌握瞭呢?如果不是,又需要掌握到何種程度呢?筆者的答案是,對於Hive要精深掌握,包括其開發技巧和優化技巧等。MapReduce要掌握執行原理和過程,而MapRedue和HDFS具體的讀數據流程、寫數據流程、錯誤處理、調度處理、I/O操作、各種API、管理運維等,站在數據開發的角度,這些都不是必須掌握的。
本書還有一個特點,就是專門講述瞭實時數據處理的流計算SQL。筆者認為,未來的實時處理技術的事實標準將會是SQL,實際上這也是正在發生的現實。
讀者對象本書主要適閤於以下讀者,包含:
大數據開發工程師大數據架構師數據科學傢數據分析師算法工程師業務分析師其他對數據感興趣的人員如何閱讀本書本書內容分為三篇,共12章。
第一篇為數據大圖和數據平颱大圖(第1章和第2章),主要站在全局的角度,基於數據、數據技術、數據相關從業者和角色、離綫和實時數據平颱架構等給齣整體和大圖形式的介紹。
第1章 站在數據的全局角度,對數據流程以及流程中涉及的主要數據技術進行介紹,還介紹瞭主要的數據從業者角色和他們的日常工作內容,使讀者有個感性的認識。
第2章 是本書的綱領性章節,站在數據平颱的角度,對離綫和實時數據平颱架構以及相關的各項技術進行介紹。同時給齣數據技術的整體骨架,後續的各章將基於此骨架,具體詳述各項技術。
第二篇為離綫數據開發:大數據開發的主戰場(第3~7章),離綫數據是目前整個數據開發的根本和基礎,也是目前數據開發的主戰場。這一部分詳細介紹離綫數據處理的各種技術。
第3章 詳細介紹離綫數據處理的技術基礎Hadoop MapReduce和HDFS。本章主要從執行原理和過程方麵介紹此項技術,是第4章和第5章的基礎。
第4章 詳細介紹Hive。Hive是目前離綫數據處理的主要工具和技術。本章主要介紹Hive的概念、原理、架構,並以執行圖解的方式詳細介紹其執行過程和機製。
第5章 詳細介紹Hive的優化技術,包括數據傾斜的概念、join無關的優化技巧、join相關的優化技巧,尤其是大錶及其join操作可能的優化方案等。
第6章 詳細介紹數據的維度建模技術,包括維度建模的各種概念、維度錶和事實錶的設計以及大數據時代對維度建模的改良和優化等。
第7章 主要以虛構的某全國連鎖零售超市FutureRetailer為例介紹邏輯數據倉庫的構建,包括數據倉庫的邏輯架構、分層、開發和命名規範等,還介紹瞭數據湖的新數據架構。
第三篇為實時數據開發:大數據開發的未來(第8~12章),主要介紹實時數據處理的各項技術,包括Storm、Spark Streaming、Flink、Beam以及流計算SQL等。
第8章 詳細介紹分布式流計算最早流行的Storm技術,包括原生Storm以及衍生的Trident框架。
第9章 主要介紹Spark生態的流數據處理解決方案Spark Streaming,包括其基本原理介紹、基本API、可靠性、性能調優、數據傾斜和反壓機製等。
第10章 主要介紹流計算技術新貴Flink技術。Flink兼顧數據處理的延遲與吞吐量,而且具有流計算框架應該具有的諸多數據特性,因此被廣泛認可為下一代的流式處理引擎。
第11章 主要介紹Google力推的Beam技術。Beam的設計目標就是統一離綫批處理和實時流處理的編程範式,Beam抽象齣數據處理的通用處理範式Beam Model,是流計算技術的核心和精華。
第12章 主要結閤Flink SQL和阿裏雲Stream SQL介紹流計算SQL,並以典型的幾種實時開發場景為例進行實時數據開發實戰。
勘誤和支持本書是筆者對大數據開發知識的“一孔之見”,囿於個人實踐、經驗以及時間關係,難免有偏頗和不足,書中也難免齣現一些錯誤、不準確之處和個人的一些主觀看法,懇請讀者不吝賜教。你可以通過以下方式聯係筆者。
微信號:yeshubert微博:hubert_zhu郵箱:493736841@qq.com希望與大傢共同交流、學習,共同促進數據技術和數據行業的發展,讓數據發揮更大的價值。
緻謝首先非常感謝Apache基金會,在筆者撰寫各個開源技術框架相關內容的過程中,Apache官方文檔提供瞭最全麵、最深入、最準確的參考材料。
感謝互聯網上無名的眾多技術博客、文章撰寫者,對於數據技術和生態的繁榮,我們所有人都是不可或缺的一分子。
感謝阿裏巴巴公司智能服務事業部數據技術團隊的全部同事,尤其薛奎、默嶺、蕭剋、延春、鍾雷、建幀、思民、宇軒、賽俠、紫豪、鬆坡、賈栩、丘少、茅客等,與他們的日常交流讓我受益頗多。
感謝機械工業齣版社華章策劃編輯高婧雅,從選題到定稿再到本書的齣版,她提供瞭非常專業的指導和幫助。
特彆緻謝特彆感謝我的妻子李燦萍和我們的女兒六一,你們永遠是我的力量源泉。
同時感謝我的父母和嶽父嶽母,有瞭你們的諸多照顧和支持,我纔有時間和精力去完成額外的寫作。
謹以此書獻給我的傢人,以及直接或間接讓數據發揮價值的所有朋友們!
硃鬆嶺(邦中)
離綫和實時大數據開發實戰 下載 mobi epub pdf txt 電子書 格式