可擴展實時數據系統構建原理與最佳實踐

《可擴展實時數據系統構建原理與最佳實踐》是於2016年12月機械工業出版社出版的一本圖書,作者是南森·馬茨。

基本介紹

  • 書名:可擴展實時數據系統構建原理與最佳實踐
  • 作者:南森·馬茨
  • 出版社:機械工業出版社
  • 出版時間:2016年12月
圖書簡介,圖書目錄,

圖書簡介

本書將教你充分利用集群硬體優勢的Lambda架構,以及專門用來捕獲和分析網路規模數據的新工具,來創建這些系統。它將描述一個可擴展的、易於理解大數據系統的方法——可以由小團隊構建並運行。

圖書目錄

第1章 大數據的新範式1
1.1 本書是如何組織的2
1.2 擴展傳統資料庫3
1.2.1 用佇列擴展3
1.2.2 通過資料庫分片進行擴展4
1.2.3 開始處理容錯問題4
1.2.4 損壞問題5
1.2.5 到底是哪裡出錯了5
1.2.6 大數據技術是如何起到幫助作用的5
1.3 NoSQL不是萬能的6
1.4 基本原理6
1.5 大數據系統應有的屬性7
1.5.1 魯棒性和容錯性7
1.5.2 低延遲讀取和更新8
1.5.3 可擴展性8
1.5.4 通用性8
1.5.5 延展性8
1.5.6 即席查詢9
1.5.7 最少維護9
1.5.8 可調試性9
1.6 全增量架構的問題10
1.6.1 操作複雜性10
1.6.2 實現最終一致性的極端複雜性11
1.6.3 缺乏容忍人為錯誤12
1.6.4 全增量架構解決方案與 Lambda架構解決方案13
1.7 Lambda架構14
1.7.1 批處理層15
1.7.2 服務層16
1.7.3 批處理層和服務層滿足幾乎所有屬性16
1.7.4 速度層17
1.8 技術上的最新趨勢19
1.8.1 CPU並不是越來越快20
1.8.2 彈性雲20
1.8.3 大數據充滿活力的開源生態系統20
1.10 總結22
第一部分 批處理層
第2章 大數據的數據模型24
2.1 數據的屬性25
2.1.1 數據是原始的28
2.1.2 數據是不可變的30
2.1.3 數據是永遠真實的33
2.2 基於事實的數據表示模型34
2.2.1 事實的示例及屬性34
2.2.2 基於事實的模型的優勢36
2.3 圖模式39
2.3.1 圖模式的元素39
2.3.2 可實施模式的必要性40
2.5 總結42
第3章 大數據的數據模型:示例44
3.1 為什麼使用序列化框架44
3.2 Apache Thrift45
3.2.1 節點46
3.2.2 邊46
3.2.3 屬性47
3.2.4 把一切組合成數據對象47
3.2.5 模式演變48
3.3 序列化框架的局限性49
3.4 總結50
第4章 批處理層的數據存儲51
4.1 主數據集的存儲需求52
4.2 為批處理層選擇存儲方案53
4.2.1 使用鍵/值存儲主數據集53
4.2.2 分散式檔案系統54
4.3 分散式檔案系統是如何工作的54
4.4 使用分散式檔案系統存儲主數據集56
4.5 垂直分區58
4.6 分散式檔案系統的底層性質58
4.7 在分散式檔案系統上存儲的主數據集60
4.8 總結61
第5章 批處理層的數據存儲:示例62
5.1 使用HDFS62
5.1.1 小檔案問題64
5.1.2 轉向更高層次的抽象64
5.2 使用Pail在批處理層存儲數據65
5.2.1 Pail基本操作66
5.2.2 序列化對象到Pail中67
5.2.3 使用Pail進行批處理操作69
5.2.4 使用Pail進行垂直分區69
5.2.5 Pail檔案格式與壓縮71
5.2.6 Pail優點的總結71
5.3 存儲的主數據集72
5.3.1 Thrift對象的結構化Pail73
5.3.2 SuperWebAnalytics的基礎Pail74
5.3.3 用於垂直分區數據集的分片Pail75
5.4 總結78
第6章 批處理層79
6.1 啟發性示例80
6.1.1 給定時間範圍內的頁面瀏覽量80
6.1.2 性別推理80
6.1.3 影響力分數81
6.2 批處理層上的計算82
6.3 重新計算算法與增量算法84
6.3.1 性能85
6.3.2 容忍人為錯誤86
6.3.3 算法的通用性86
6.3.4 選擇算法的風格87
6.4 批處理層中的可擴展性87
6.5 MapReduce:一種大數據計算的範式88
6.5.1 可擴展性89
6.5.2 容錯性91
6.5.3 MapReduce的通用性92
6.6 MapReduce的底層特性94
6.6.1 多步計算很怪異94
6.6.2 手動實現連線非常複雜94
6.6.3 邏輯和物理執行緊密耦合96
6.7 管道圖—一種關於批處理計算的高級思維方式97
6.7.1 管道圖的概念97
6.7.2 通過MapReduce執行管道圖101
6.7.3 合併聚合器101
6.7.4 管道圖示例102
6.8 總結103
第7章 批處理層:示例104
7.1 一個例證105
7.2 數據處理工具的常見陷阱106
7.2.1 自定義語言107
7.2.2 不良的可組合抽象107
7.3 JCascalog介紹108
7.3.1 JCascalog的數據模型109
7.3.2 JCascalog查詢的結構110
7.3.3 查詢多個數據集111
7.3.4 分組和聚合器113
7.3.5 對一個查詢示例進行單步調試114
7.3.6 自定義謂詞操作117
7.4 組合121
7.4.1 合併子查詢122
7.4.2 動態創建子查詢123
7.4.3 謂詞宏125
7.4.4 動態創建謂詞宏128
7.5 總結130
第8章 批處理層示例:架構和算法131
8.1 SuperWebAnalytics批處理層的設計132
8.1.1 所支持的查詢132
8.1.2 批處理視圖132
8.2 工作流概述135
8.3 獲取新數據137
8.4 URL規範化137
8.5 用戶標識符規範化138
8.6 頁面瀏覽去重142
8.7 計算批處理視圖142
8.7.1 給定時間範圍內的頁面瀏覽量143
8.7.2 給定時間範圍內的獨立訪客143
8.7.3 跳出率分析144
8.8 總結145
第9章 批處理層示例:實現147
9.1 出發點147
9.2 準備工作流148
9.3 獲取新數據149
9.4 URL規範化152
9.5 用戶標識符規範化153
9.6 頁面瀏覽去重159
9.7 計算批處理視圖159
9.7.1 給定時間範圍內的頁面瀏覽量159
9.7.2 給定時間範圍內的獨立訪客161
9.7.3 跳出率分析163
9.8 總結165
第二部分 服務層
第10章 服務層概述168
10.1 服務層的性能指標169
10.2 規範化/非規範化問題的服務層解決方案172
10.3 服務層資料庫的需求173
10.4 設計SuperWebAnalytics的服務層174
10.4.1 給定時間範圍內的頁面瀏覽量175
10.4.2 給定時間範圍內的獨立訪客175
10.4.3 跳出率分析176
10.5 對比全增量的解決方案177
10.5.1 給定時間範圍內的獨立訪客的全增量方案177
10.5.2 與Lambda架構解決方案的比較182
10.6 總結183
第11章 服務層:示例184
11.1 ElephantDB的基本概念184
11.1.1 ElephantDB中的視圖創建185
11.1.2 ElephantDB中的視圖服務185
11.1.3 使用ElephantDB186
11.2 創建SuperWebAnalytics的服務層188
11.2.1 給定時間範圍內的頁面瀏覽量188
11.2.2 給定時間範圍內的獨立訪客數量191
11.2.3 跳出率分析191
11.3 總結192
第三部分 速度層
第12章 實時視圖194
12.1 計算實時視圖195
12.2 存儲實時視圖197
12.2.1 最終一致性198
12.2.2 速度層中存儲的狀態總量198
12.3 增量計算的挑戰199
12.3.1 CAP原理的有效性199
12.3.2 CAP原理和增量算法之間複雜的相互作用201
12.4 異步更新與同步更新202
12.5 過期實時視圖203
12.6 總結205
第13章 實時視圖:示例206
13.1 Cassandra的數據模型206
13.2 使用Cassandra208
13.3 總結210
第14章 佇列和流處理211
14.1 佇列211
14.1.1 單消費者佇列212
14.1.2 多消費者佇列214
14.2 流處理214
14.2.1 佇列和工作節點215
14.2.2 佇列和工作節點的缺陷216
14.3 更高層次的一次一個的流處理217
14.3.1 Storm模型217
14.3.2 保證訊息處理221
14.4 SuperWebAnalytics速度層223
14.5 總結226
第15章 佇列和流處理:示例227
15.1 使用Apache Storm定義拓撲結構227
15.2 Apache Storm集群及其部署230
15.3 保證訊息處理232
15.4 實現SuperWebAnalytics給定時間範圍內的獨立訪客的速度層233
15.5 總結237
第16章 微批量流處理239
16.1 實現有且僅有一次語義240
16.1.1 強有序處理240
16.1.2 微批量流處理241
16.1.3 微批量流處理的拓撲結構242
16.2 微批量流處理的核心概念244
16.3 微批量流處理的擴展管道圖245
16.4 完成SuperWebAnalytics的速度層246
16.4.1 給定時間範圍內的頁面瀏覽量246
16.4.2 跳出率分析247
16.5 另一個跳出率分析示例251
16.6 總結252
第17章 微批量流處理:示例253
17.1 使用Trident253
17.2 完成SuperWebAnalytics的速度層257
17.2.1 給定時間範圍內的頁面瀏覽量257
17.2.2 跳出率分析259
17.3 完全容錯、基於記憶體及微批量處理265
17.4 總結266
第18章 深入Lambda架構268
18.1 定義數據系統268
18.2 批處理層和服務層270
18.2.1 增量的批處理270
18.2.2 測量和最佳化批處理層的資源使用276
18.3 速度層280
18.4 查詢層281
18.5 總結282

相關詞條

熱門詞條

聯絡我們