産品特色
編輯推薦
適讀人群 :1.大數據應用開發人員對這部分讀者來說,本書的內容有助於加深他們對大數據技術的理解,提高自己的開發水平。本書可以作為他們應用、定製和擴展大數據的寶貴參考資料。2. (1)作者是資深大數據專傢,經驗極其豐富,著有《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》和《Hadoop技術內幕:深入解析YARN架構設計與實現原理》兩本暢銷書。
(2)從數據收集、數據存儲、資源管理與服務協調、計算引擎、數據分析、數據可視化6個方麵詳細講解全棧大數據技術。
內容簡介
這是一部係統、深度講解大數據技術棧的著作,從數據收集、數據存儲、資源管理與服務協調、計算引擎、數據分析、數據可視化6個層次講解瞭整個大數據技術體係中所有核心技術的原理、架構與實踐。不僅能讓讀者從宏觀上全麵認識整個大數據係統,而且還能讓讀者從微觀上深入理解各種大數據技術的細節。
本書將以數據在大數據係統中的生命周期為綫索,一共17章,分為七個部分:
第一部分(第1章):概述
主要介紹企業級大數據技術框架、技術實現方案和架構,包括Google的大數據技術棧和以Hadoop和Spark為代錶的開源技術棧。
第二部分(第2-4章):數據收集
講解大數據收集相關技術,主要涉及關係型數據收集工具Sqoop與Canel,非關係型數據收集係統Flume以及分布式消息隊列Kafka。
第三部分(第5-7章):數據存儲
講解大數據存儲相關技術,涉及數據存儲格式,分布式文件係統以及分布式數據庫三部分,包括Thrift、Protobuf、Avro、HDFS和HBase等。
第四部分(第8-9章):分布式協調與資源管理
講解資源管理和服務協調相關技術,涉及資源管理和調度係統YARN以及資源協調係統Zookeeper。
第五部分(第10-13章):計算引擎
講解計算引擎相關技術,涉及批處理、交互式處理以及流式實時處理三類引擎,包括MapReduce、Spark、Impala/Presto、Storm等常用技術。
第六部分(第14-16章):數據分析
講解數據分析相關技術,涉及基於數據分析語言HQL與SQL,大數據統一編程模型及機器學習庫等。
第七部分(第17章):應用案例
講解瞭3個企業級大數據綜閤應用案例,包括Lambda架構、基於大數據技術的數據倉庫、用戶行為實時統計係統。
作者簡介
董西成
資深大數據技術實踐者和研究者,對大數據基礎架構有非常深刻的認識和理解,有著豐富的實踐經驗。熟悉常見的開源大數據解決方案,包括Hadoop和Spark生態係統等,擅長底層分布式係統的優化和開發。撰寫瞭大量關於Hadoop和Spark等大數據相關的技術文章並分享在自己的博客上,由於文章技術含量高,所以非常受歡迎。
齣版有大數據領域負有盛名的專著:《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》和《Hadoop技術內幕:深入解析YARN架構設計與實現原理》。
個人博客:http://dongxicheng.org/(大量關於Hadoop的乾貨分享)
微信公眾賬號:hadoop123(大量關於大數據最新資訊和乾貨分享)
如果想瞭解更多關於本書的內容,可訪問:http://hadoop123.com/
目錄
目 錄?Contents
前 言
第一部分 概述篇
第1章 企業級大數據技術體係概述 2
1.1 大數據係統産生背景及應用場景 2
1.1.1 産生背景 2
1.1.2 常見大數據應用場景 3
1.2 企業級大數據技術框架 5
1.2.1 數據收集層 6
1.2.2 數據存儲層 7
1.2.3 資源管理與服務協調層 7
1.2.4 計算引擎層 8
1.2.5 數據分析層 9
1.2.6 數據可視化層 9
1.3 企業級大數據技術實現方案 9
1.3.1 Google大數據技術棧 10
1.3.2 Hadoop與Spark開源大數據技術棧 12
1.4 大數據架構:Lambda Architecture 15
1.5 Hadoop與Spark版本選擇及安裝部署 16
1.5.1 Hadoop與Spark版本選擇 16
1.5.2 Hadoop與Spark安裝部署 17
1.6 小結 18
1.7 本章問題 18
第二部分 數據收集篇
第2章 關係型數據的收集 20
2.1 Sqoop概述 20
2.1.1 設計動機 20
2.1.2 Sqoop基本思想及特點 21
2.2 Sqoop基本架構 21
2.2.1 Sqoop1基本架構 22
2.2.2 Sqoop2基本架構 23
2.2.3 Sqoop1與Sqoop2對比 24
2.3 Sqoop使用方式 25
2.3.1 Sqoop1使用方式 25
2.3.2 Sqoop2使用方式 28
2.4 數據增量收集CDC 31
2.4.1 CDC動機與應用場景 31
2.4.2 CDC開源實現Canal 32
2.4.3 多機房數據同步係統Otter 33
2.5 小結 35
2.6 本章問題 35
第3章 非關係型數據的收集 36
3.1 概述 36
3.1.1 Flume設計動機 36
3.1.2 Flume基本思想及特點 37
3.2 Flume NG基本架構 38
3.2.1 Flume NG基本架構 38
3.2.2 Flume NG高級組件 41
3.3 Flume NG數據流拓撲構建方法 42
3.3.1 如何構建數據流拓撲 42
3.3.2 數據流拓撲實例剖析 46
3.4 小結 50
3.5 本章問題 50
第4章 分布式消息隊列Kafka 51
4.1 概述 51
4.1.1 Kafka設計動機 51
4.1.2 Kafka特點 53
4.2 Kafka設計架構 53
4.2.1 Kafka基本架構 54
4.2.2 Kafka各組件詳解 54
4.2.3 Kafka關鍵技術點 58
4.3 Kafka程序設計 60
4.3.1 Producer程序設計 61
4.3.2 Consumer程序設計 63
4.3.3 開源Producer與Consumer實現 65
4.4 Kafka典型應用場景 65
4.5 小結 67
4.6 本章問題 67
第三部分 數據存儲篇
第5章 數據序列化與文件存儲格式 70
5.1 數據序列化的意義 70
5.2 數據序列化方案 72
5.2.1 序列化框架Thrift 72
5.2.2 序列化框架Protobuf 74
5.2.3 序列化框架Avro 76
5.2.4 序列化框架對比 78
5.3 文件存儲格式剖析 79
5.3.1 行存儲與列存儲 79
5.3.2 行式存儲格式 80
5.3.3 列式存儲格式ORC、Parquet與CarbonData 82
5.4 小結 88
5.5 本章問題 89
第6章 分布式文件係統 90
6.1 背景 90
6.2 文件級彆和塊級彆的分布式文件係統 91
6.2.1 文件級彆的分布式係統 91
6.2.2 塊級彆的分布式係統 92
6.3 HDFS基本架構 93
6.4 HDFS關鍵技術 94
6.4.1 容錯性設計 95
6.4.2 副本放置策略 95
6.4.3 異構存儲介質 96
6.4.4 集中式緩存管理 97
6.5 HDFS訪問方式 98
6.5.1 HDFS shell 98
6.5.2 HDFS API 100
6.5.3 數據收集組件 101
6.5.4 計算引擎 102
6.6 小結 102
6.7 本章問題 103
第7章 分布式結構化存儲係統 104
7.1 背景 104
7.2 HBase數據模型 105
7.2.1 邏輯數據模型 105
7.2.2 物理數據存儲 107
7.3 HBase基本架構 108
7.3.1 HBase基本架構 108
7.3.2 HBase內部原理 110
7.4 HBase訪問方式 114
7.4.1 HBase shell 114
7.4.2 HBase API 116
7.4.3 數據收集組件 118
7.4.4 計算引擎 119
7.4.5 Apache Phoenix 119
7.5 HBase應用案例 120
7.5.1 社交關係數據存儲 120
7.5.2 時間序列數據庫OpenTSDB 122
7.6 分布式列式存儲係統Kudu 125
7.6.1 Kudu基本特點 125
7.6.2 Kudu數據模型與架構 126
7.6.3 HBase與Kudu對比 126
7.7 小結 127
7.8 本章問題 127
第四部分 分布式協調與資源管理篇
第8章 分布式協調服務ZooKeeper 130
8.1 分布式協調服務的存在意義 130
8.1.1 leader選舉 130
8.1.2 負載均衡 131
8.2 ZooKeeper數據模型 132
8.3 ZooKeeper基本架構 133
8.4 ZooKeeper程序設計 134
8.4.1 ZooKeeper API 135
8.4.2 Apache Curator 139
8.5 ZooKeeper應用案例 142
8.5.1 leader選舉 142
8.5.2 分布式隊列 143
8.5.3 負載均衡 143
8.6 小結 144
8.7 本章問題 145
第9章 資源管理與調度係統YARN 146
9.1 YARN産生背景 146
9.1.1 MRv1局限性 146
9.1.2 YARN設計動機 147
9.2 YARN設計思想 148
9.3 YARN的基本架構與原理 149
9.3.1 YARN基本架構 149
9.3.2 YARN高可用 152
9.3.3 YARN工作流程 153
9.4 YARN資源調度器 155
9.4.1 層級隊列管理機製 155
9.4.2 多租戶資源調度器産生背景 156
9.4.3 Capacity/Fair Scheduler 157
9.4.4 基於節點標簽的調度 160
9.4.5 資源搶占
前言/序言
Preface?前 言為什麼要寫這本書隨著大數據技術的普及,它已經被廣泛應用於互聯網、電信、金融、工業製造等諸多行業。據相關報告統計,大數據人纔需求呈井噴態勢,越來越多的程序員開始學習大數據技術,這使得它已經成為程序員所需的基本技能。
為瞭滿足大數據人纔市場需求,越來越多的大數據技術書籍不斷麵世,包括《Hadoop權威指南》《Hadoop實戰》等。盡管如此,麵嚮初、中級學者,能夠係統化、體係化介紹大數據技術的基礎書籍並不多見。筆者曾接觸過大量大數據初學者,他們一直渴望能有一本簡單且易於理解的教科書式的大數據書籍齣現。為瞭滿足這些讀者的需求,筆者根據自己多年的數據項目和培訓經驗,繼《Hadoop技術內幕》書籍之後,於兩年前開始嘗試編寫一本淺顯易讀的大數據基礎書籍。
相比於現有的大數據基礎書籍,本書具有三大特色:①係統性:深度剖析大數據技術體係的六層架構;②技術性:詳盡介紹Hadoop和Spark等主流大數據技術;③實用性:理論與實踐相結閤,探討常見的大數據問題。本書嘗試以“數據生命周期”為綫索,按照分層結構逐步介紹大數據技術體係,涉及數據收集、數據存儲、資源管理和服務協調、計算引擎及數據分析五層技術架構,由點及麵,最終通過綜閤案例將這些技術串接在一起。
讀者對象(1)大數據應用開發人員本書用瞭相當大的篇幅介紹各個大數據係統的適用場景和使用方式,能夠很好地幫助大數據應用開發工程師設計齣滿足要求的程序。
(2)大數據講師和學員本書按照大數據五層架構,即數據收集→數據存儲→資源管理與服務協調→計算引擎→數據分析,完整介紹瞭整個大數據技術體係,非常易於理解,此外,每節包含大量代碼示例和思考題目,非常適閤大數據教學。
(3)大數據運維工程師對於一名閤格的大數據運維工程師而言,適當地瞭解大數據係統的應用場景、設計原理和架構是十分有幫助的,這不僅有助於我們更快地排除各種可能的大數據係統故障,也能夠讓運維人員與研發人員更有效地進行溝通。本書可以有效地幫助運維工程師全麵理解當下主流的大數據技術體係。
(4)開源軟件愛好者開源大數據係統(比如Hadoop和Spark)是開源軟件中的佼佼者,它們在實現的過程中吸收瞭大量開源領域的優秀思想,同時也有很多值得學習的創新。通過閱讀本書,這部分讀者不僅能領略到開源軟件的優秀思想,還可以學習如何構建一套完整的技術生態。
如何閱讀本書本書以數據在大數據係統中的生命周期為綫索,介紹以Hadoop與Spark為主的開源大數據技術棧。本書內容組織方式如下。
第一部分:主要介紹大數據體係架構,以及Google和Hadoop技術棧,讓讀者從高層次上對大數據技術有一定瞭解。
第二部分:介紹大數據分析相關技術,主要涉及關係型數據收集工具Sqoop與Canel、非關係型數據收集係統Flume,以及分布式消息隊列Kafka。
第三部分:介紹大數據存儲相關技術,涉及數據存儲格式、分布式文件係統及分布式數據庫三部分。
第四部分:介紹資源管理和服務協調相關技術,涉及資源管理和調度係統YARN,以及資源協調係統ZooKeeper。
第五部分:介紹計算引擎相關技術,包括批處理、交互式處理,以及流式實時處理三類引擎,內容涉及MapReduce、Spark、Impala/Presto、Storm等常用技術。
第六部分:介紹數據分析相關技術,涉及基於數據分析的語言HQL與SQL、大數據統一編程模型及機器學習庫等。
大數據體係的邏輯也是本書的邏輯,故這裏給齣大數據體係邏輯圖。
勘誤和支持由於筆者的水平有限,編寫時間倉促,書中難免會齣現一些錯誤或者不準確的地方,懇請讀者批評指正。為此,筆者特意創建瞭一個在綫支持與應急方案的站點http://hadoop123.com和微信公眾號hadoop-123。你可以將書中的錯誤發布在Bug勘誤錶頁麵。如果你遇到任何問題,也可以訪問Q&A;頁麵,我將盡量在綫上為你提供最滿意的解答。如果你有更多寶貴的意見,也歡迎發送郵件至郵箱dongxicheng@yahoo.com,期待能夠得到你們的真摯反饋。
獲取源代碼實例本書各節的源代碼實例可從網站http://hadoop123.com或微信公眾號hadoop-123中獲取。
緻謝感謝我的導師廖華明副研究員,是她引我進入大數據世界。
感謝機械工業齣版社華章公司的孫海亮編輯對本書的校訂,他的鼓勵和幫助使我順利完成瞭本書的編寫工作。
最後感謝我的父母,感謝他們的養育之恩,感謝兄長的鼓勵和支持,感謝他們時時刻刻給我以信心和力量!
謹以此書獻給我最親愛的傢人,以及眾多熱愛大數據技術的朋友們!
董西成
《海量數據的智慧:構建未來信息世界的基石》 在這個信息爆炸的時代,數據如同潮水般洶湧而來,以前所未有的速度增長、積纍,並以前所未有的廣度滲透到我們生活的方方麵麵。從社交媒體上的每一次點擊、每一次分享,到物聯網設備傳迴的實時傳感器讀數,再到科學研究中産生的海量實驗數據,以及金融交易中的瞬息萬變,數據已成為驅動社會進步、商業決策和科學發現的核心動力。然而,這些數據的價值並非顯而易見,它們往往隱藏在雜亂無章的錶麵之下,需要強大的技術和深刻的洞察力纔能挖掘。 《海量數據的智慧:構建未來信息世界的基石》一書,正是一部旨在揭示數據背後巨大潛力的權威指南。它並非僅僅羅列枯燥的技術術語,而是深入剖析瞭如何從海量、多樣、高速流動的數據中提取有價值的信息,並將其轉化為 actionable insights(可操作的見解)和智能化的應用。本書的目標讀者群體廣泛,無論是渴望理解現代數據驅動型世界的商業領袖、正在進行復雜數據分析的科研人員、尋求技術升級的IT專業人士,還是對未來科技發展充滿好奇的普通讀者,都能從中獲得深刻的啓發和實用的知識。 第一部分:理解數據的洪流——從概念到挑戰 本書開篇,將帶領讀者穿越數據世界的迷霧,首先建立對“大數據”這一概念的清晰認知。我們不再滿足於“大數據”的字麵含義,而是深入探討其核心特徵——體量(Volume)、速度(Velocity)、多樣性(Variety)、真實性(Veracity)以及價值(Value)。本書會通過生動的事例,闡釋這五大特徵如何在實際場景中交織影響,以及它們給傳統的數據處理和分析方法帶來的顛覆性挑戰。例如,我們可能會探討電商平颱如何應對每秒數百萬的交易請求,社交媒體如何處理每時每分都在新增的文本、圖片和視頻信息,以及醫療領域如何整閤來自不同源頭的患者數據以提供更精準的診斷。 接著,我們將審視這些挑戰的具體錶現。數據存儲的爆炸性增長意味著傳統的單機數據庫已不堪重負,需要分布式、可擴展的存儲解決方案。數據處理的實時性要求傳統批處理模式難以滿足,催生瞭流式計算和實時分析的需求。數據的多樣性,包括結構化、半結構化和非結構化數據,需要靈活多變的數據模型和處理工具。而數據的真實性,則關乎分析結果的可靠性,要求我們關注數據質量、數據清洗和數據治理。最後,如何在海量數據中發現有價值的信息,並轉化為商業利益或社會效益,是數據存在的終極意義,也是本書後續內容的核心驅動力。 第二部分:構建數據的骨骼——核心技術與架構演進 理解瞭數據的挑戰,我們自然會進入如何構建支撐海量數據處理與分析的基礎設施。本書將係統性地介紹構建現代數據處理體係所必需的核心技術,並追溯其發展曆程。 首先,分布式存儲係統是海量數據處理的基石。我們將深入探討Hadoop分布式文件係統(HDFS)的設計理念、工作原理以及在實際應用中的優劣。本書會詳細解析HDFS如何通過數據分塊、副本機製以及 NameNode 和 DataNode 的協作,實現海量數據的可靠存儲和高效訪問。此外,我們還將介紹對象存儲(Object Storage)等新興的存儲範式,以及它們在雲原生環境下的應用。 其次,分布式計算框架是處理海量數據的引擎。除瞭經典的MapReduce模型,本書將重點介紹Spark的崛起及其革命性影響。我們會詳細解析Spark的內存計算優勢、DAG執行引擎、彈性分布式數據集(RDD)的概念,以及Spark SQL、Spark Streaming、MLlib等組件的強大功能。通過具體的代碼示例和場景分析,讀者將理解Spark如何大幅提升數據處理的速度和靈活性,滿足更復雜的計算需求。 再次,數據倉庫與數據湖是組織和管理海量數據的關鍵。本書將區分傳統數據倉庫的理念,並重點闡述數據湖(Data Lake)作為一種更具彈性和靈活性的數據存儲和管理解決方案。我們將探討數據湖的架構、數據攝入、元數據管理、數據治理以及如何在此基礎上構建多樣化的分析層。同時,也會介紹湖倉一體(Lakehouse)這一融閤數據倉庫和數據湖優勢的新型架構。 最後,流式處理技術是應對實時數據洪流的利器。本書將深入講解Kafka作為分布式消息隊列的工作機製,它在數據管道中的核心作用,以及如何實現高吞吐量、低延遲的數據傳輸。在此基礎上,我們將探討Flink、Spark Streaming等流式處理引擎,分析它們的架構特點、窗口機製、狀態管理等關鍵概念,以及如何在實時場景下進行數據分析和事件驅動的應用開發。 第三部分:挖掘數據的靈魂——數據分析與智能化應用 擁有瞭強大的數據基礎設施,接下來的重點便是如何從數據中挖掘齣有價值的信息,並將其轉化為智能化應用。 數據分析是其中的核心環節。本書將覆蓋從基礎的數據清洗、預處理,到數據建模、特徵工程,再到統計分析、機器學習算法的應用。我們會介紹常用的數據分析工具和語言,如Python(Pandas, NumPy, Scikit-learn)和SQL,並結閤實際案例,演示如何進行探索性數據分析(EDA),發現數據中的模式和趨勢。 在機器學習領域,本書將超越理論,側重於實際應用。我們將介紹監督學習、無監督學習、半監督學習等主要範式,並深入剖析一些核心算法,如綫性迴歸、邏輯迴歸、決策樹、隨機森林、支持嚮量機(SVM)、K-Means聚類以及深度學習的基本概念。本書會關注這些算法在實際問題中的選擇、調優和評估,例如在推薦係統、欺詐檢測、圖像識彆、自然語言處理等領域的應用。 數據可視化是讓數據說話的關鍵。本書將介紹優秀的可視化工具和庫(如Matplotlib, Seaborn, Tableau, Power BI),並強調如何通過清晰、直觀的圖錶有效地傳達數據洞察,幫助決策者理解復雜的數據信息,做齣明智的判斷。 智能化應用是大數據技術最終的落地。本書將通過多個行業案例,展示大數據技術如何驅動創新。例如,在精準營銷中,如何利用用戶行為數據進行用戶畫像,實現個性化推薦和廣告投放;在風險控製領域,如何通過實時數據分析來識彆和預測欺詐行為;在智能製造中,如何通過物聯網數據優化生産流程,提高效率和産品質量;在智慧城市建設中,如何利用交通、環境等數據提升城市管理水平。 第四部分:駕馭數據的未來——挑戰、倫理與趨勢 大數據技術的發展並非一帆風順,它伴隨著諸多挑戰和倫理考量。本書的最後一章將放眼未來,探討這些關鍵問題。 數據安全與隱私保護是重中之重。隨著數據收集的規模和敏感性不斷增加,如何確保數據不被濫用、泄露,如何遵守GDPR等隱私法規,將是所有數據從業者必須麵對的嚴峻挑戰。本書將探討各種數據安全技術和隱私保護策略。 數據治理與元數據管理是確保數據價值和可靠性的重要保障。本書將強調建立完善的數據治理框架,包括數據質量管理、數據生命周期管理、訪問控製以及元數據的有效管理,是實現數據驅動的關鍵。 算法的公平性與可解釋性是當前人工智能領域的熱點問題。本書將探討如何識彆和解決算法中的偏見,以及如何提高模型的可解釋性,以增強用戶信任和滿足監管要求。 最後,本書將展望大數據技術的未來發展趨勢。我們將探討人工智能與大數據融閤的深度、聯邦學習、圖計算、邊緣計算等新興技術在數據處理中的潛力,以及如何在日益復雜和動態的環境中持續挖掘數據的價值,構建更加智能、高效、普惠的未來信息世界。 《海量數據的智慧:構建未來信息世界的基石》是一次深入的探索之旅,它將為你揭示隱藏在海量數據中的無限可能,為你提供駕馭這股數據洪流的知識和工具,讓你能夠更好地理解和參與到這個由數據驅動的嶄新時代。