發表於2024-12-13
大數據係統構建:可擴展實時數據係統構建原理與最佳實踐 pdf epub mobi txt 電子書 下載
近年來,互聯網技術發展迅猛,從電子交易記錄、社交網絡數據分析到地震分析、分子建模,各行各業應用大數據係統的範圍日益拓寬,所涉及的數據量日益“臃腫”,對處理速度的要求也日益提高,這就需要用基於硬件集群構建的架構進行存儲和處理。但這種架構在提供便利的同時,也引入瞭大多數開發者並不熟悉的、睏擾傳統架構的復雜性問題。
本書教你使用一種專門設計用來獲取和分析網絡規模數據的架構去構建大數據係統——Lambda架構,它是一種可擴展的、易於理解的、可以被小團隊用來構建和運行大數據係統的方法。除瞭與你分享Lambda架構的相關知識,本書還給齣瞭相應的示例,將“理論應用於實踐”,助你更好地“認識”Lambda架構,更好地將其應用到工作中。
隨著社交網絡、網絡分析和智能型電子商務的興起,傳統的數據庫係統顯然已無法滿足海量數據的管理需求。 作為一種新的處理模式,大數據係統應運而生,它使用多颱機器並行工作,能夠對海量數據進行存儲、處理、分析,進而幫助用戶從中提取對優化流程、實現高增長率的有用信息,做更為精準有效的決策。 但不可忽略的是,它也引入瞭大多數開發者並不熟悉的、睏擾傳統架構的復雜性問題。
本書將教你充分利用集群硬件優勢的Lambda架構,以及專門用來捕獲和分析網絡規模數據的新工具,來創建這些係統。它將描述一個可擴展的、易於理解大數據係統的方法——可以由小團隊構建並運行。本書共18章,除瞭介紹基本概念,其他章節采用“理論+示例”的方式來闡釋相關概念,並使用現實世界中的工具加以論證。其中,第1章介紹瞭數據係統的原理,給齣瞭Lambda架構的概述,並概述瞭構建任何數據係統的廣義方法。第2~9章集中闡述Lambda架構的批處理層。第10章和第11章集中闡述服務層,讓讀者瞭解隻批量寫入的特定數據庫——這些數據庫比傳統數據庫更簡單,它們具有齣色的性能,並具備可操作性、穩健性等特點。第12~17章集中闡述速度層,讓讀者更明確地瞭解NoSQL數據庫、流處理和管理增量計算的復雜性。 第18章通過綜閤迴顧Lambda架構的相關知識,幫助讀者瞭解增量批處理、基本Lambda架構的變種,以及如何充分利用資源。
作者簡介
Nathan Marz Cascalog和Storm的創始人。在2011年Twitter收購社交媒體數據分析公司BackType前,他是BackType首席工程師。在Twitter,他建立瞭流計算團隊,提供和開發共享基礎設施,為整個公司的關鍵實時應用提供支持。他目前是Stealth startup的創始人。
James Warren Storm8的分析架構師,精通大數據處理、機器學習和科學計算。
譯者簡介
馬延輝,資深Hadoop技術專傢,對Hadoop生態係統相關技術有著深刻的理解,在Hadoop開發和運維方麵積纍瞭豐富的經驗。曾就職於阿裏、Answers.com、暴風等互聯網公司,從事Hadoop相關的研發和運維工作,對大數據技術的企業級落地、研發、運維和管理有著深刻的理解和豐富的實戰經驗。開源HBase監控工具Ella作者。現在緻力於大數據技術在傳統行業的落地和大數據技術的普及和推廣。
嚮磊,前暴風影音數據平颱架構師,目前在某垂直電商平颱擔任技術總監,惠普中國Hadoop相關課程講師。開源項目EasyHadoop、phpHiveAdmin作者,對Hadoop及其周邊生態係統的底層運維及開發、集群自動化運維、網絡架構設計、集群安全、性能優化、嵌入式編程方麵有較深入瞭解。
魏東琦,博士,長期從事軟件研發工作,現就職於中國地質調查局西安地質調查中心,參加、承擔過多項科研項目。現緻力於地質行業與大數據技術融閤的相關研究工作。
*越瞭個彆工具或平颱。任何從事大數據係統工作的人都需要閱讀。
—— Jonathan Esterhazy, Groupon
一次全麵的、樣例驅動的Lambda架構之旅,由Lambda架構的發起人為您指導。
—— Mark Fisher, Pivotal
內含隻有在經曆許多大數據項目後纔能獲得的智慧。這是一本必須閱讀的書。
—— Pere Ferrera Bertran, Datasalt
在批處理和近似實時處理中,簡化數據管道的實際指南。
—— Alex Holmes,《Hadoop實踐》作者
譯 者 序
前 言
關於本書
緻 謝
第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.9 示例應用:SuperWebAnalytics.com21
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.4 SuperWebAnalytics.com的完整數據模型41
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 在分布式文件係統上存儲SuperWebAnalytics.com的主數據集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 存儲SuperWebAnalytics.com的主數據集72
5.3.1 Thrift對象的結構化Pail73
5.3.2 SuperWebAnalytics.com的基礎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.com批處理層的設計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.com的服務層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.com的服務層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.com速度層223
14.5 總結226
第15章 隊列和流處理:示例227
15.1 使用Apache Storm定義拓撲結構227
15.2 Apache Storm集群及其部署230
15.3 保證消息處理232
15.4 實現SuperWebAnalytics.com給定時間範圍內的獨立訪客的速度層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.com的速度層246
16.4.1 給定時間範圍內的頁麵瀏覽量246
16.4.2 跳齣率分析247
16.5 另一個跳齣率分析示例251
16.6 總結252
第17章 微批量流處理:示例253
17.1 使用Trident253
17.2 完成SuperWebAnalytics.com的速度層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
The Translator抯 Words 譯 者 序
首先,請允許我們對Nathan Marz緻以崇高的敬意。
Nathan Marz是分布式實時計算係統Storm的創始人,在Twitter收購社交媒體數據分析公司BackType前擔任BackType的首席工程師,之後選擇離開Twitter,創立自己的公司。在實時大數據處理係統中,Storm作為Apache頂級開源項目已經成為大數據界不可或缺的一部分。因此,對於能夠翻譯Nathan Marz的書籍,我們深感榮幸。
與大多數程序員一樣,Nathan Marz也是通過遊戲進入開發者的世界的,在這一點上,似乎我們大多數人與Nathan Marz相差無幾。但不同的是,Nathan Marz開創性地設計並使用Clojure語言編寫瞭Storm,為我們揭開瞭大數據處理的新篇章,而我們未曾想過海量數據是可以實時分析並處理的,這也正是他與眾不同的地方。 Nathan Marz對大數據概念的理解非常深刻,在編程技術上基礎紮實,如同Dean Jeffrey和Doug Cutting那樣,他用自己超凡的智慧,帶領我們步入瞭一個全新的數據時代。
本書藉一些虛構的社交媒體示例,來讓讀者深入理解以下幾件事情:
1)什麼是大數據,它們從哪裏來?
2)社交媒體有哪些數據是有價值且需要我們去分析的?
3)在使用數據的過程中,我們需要用哪些思路、架構、工具來實現自己的目的?
4)對於不同的數據類型,我們如何選擇正確的架構和模型去進行分析和挖掘?
在翻譯的過程中,我們也瞭解到,Nathan Marz不僅在數學與編程方麵纔華橫溢,對各種開發工具與架構也是信手拈來,而且他所寫的書籍也是字字珠璣,文不加點。他所寫的內容深邃卻並不晦澀,淺顯易懂,貼近實戰,原作行文流暢,文采炳煥。本書將大數據方方麵麵的工具以實例的形式引入內容中,令 大數據係統構建:可擴展實時數據係統構建原理與最佳實踐 下載 mobi epub pdf txt 電子書
好書,寫的非常清晰,翻譯的也很好。好喜歡
評分好好好我們一直在哪天的事情緒不知道是不知道是不
評分大批量的購買的,應該不錯
評分買書多過看書,這是病啊,囤瞭好多書,可以開始好好看瞭。好書不怕晚
評分書不錯,值得翻翻
評分東西不錯,值得下次繼續購買,你值得擁有。
評分沒有一定基礎比較難看懂,需要動手練習纔能更好理解。
評分嗚嗚
評分還不錯,還不錯,還不錯!還不錯!
大數據係統構建:可擴展實時數據係統構建原理與最佳實踐 pdf epub mobi txt 電子書 下載