本書以Hadoop HDFS為載體,介紹了構建一款分布式系統(tǒng)(尤其是存儲方向)所需的核心技術,所有內容均基于當前較新的3.3.x/3.4.x版本,分別從理論和實踐兩個維度逐一闡述。本書主要包括兩篇:核心原理篇介紹了HDFS的誕生歷史、元數據及Block管理、節(jié)點間通信機制、讀寫數據流程和高可用實現原理等;拓展與實踐篇從實際出發(fā),充分考慮了用戶在應用過程中會遇到的痛點,詳細介紹了集群拓展方法、數據分層存儲、集群維護與多租戶實施等實踐經驗。
本書各章節(jié)都配有必要的流程圖和原理分析圖,便于讀者閱讀理解,并精選了非常有用的實際案例及拓展知識。閱讀本書后,相信會給讀者帶來1 1>2的效果。
本書非常適合大數據從業(yè)者、云計算領域研發(fā)及運維人員、高校研究生和熱衷于分布式的技術極客閱讀學習。
1. 互聯網大廠技術專家傾力之作,大數據從業(yè)者入門。
2. 140分鐘講解視頻掃碼即可觀看。
3. Hadoop項目源代碼免費下載。
在數據規(guī)模爆炸式增長的今天,復雜的業(yè)務場景對數據的使用提出了更高的要求,數據需具備良好的容錯能力,集群服務應擁有健壯的穩(wěn)定性。 Hadoop HDFS自誕生至今,一直都是大數據領域事實上的分布式存儲基座,已經得到眾多企業(yè)支持,包括Cloudera、Uber、騰訊、美團、等。據了解,不少生產環(huán)境集群節(jié)點達到萬臺以上,可以輕松應對多場景業(yè)務類型的訪問。在開源社區(qū),HDFS始終保持較高關注度,版本迭代也很快。至本書撰寫前夕,Hadoop版本已經來到3.4。榮幸之至,作者也貢獻了部分feature。
由于工作的關系,作者日常接觸到不少和集群有關的問題,慢慢地也有了一些經驗積累。這里分享幾個編寫本書的初衷:
雖然HDFS已經被廣泛應用于大數據領域,且直接或間接從事和HDFS有關的人員很多,如研發(fā)工程師、運維工程師,但大多數人對HDFS這款分布式系統(tǒng)的認識只停在熟悉的階段,還遠未達到理解的程度,因此迫切需要一本既有廣度、又兼顧深度的指導書籍。
作者此前專職從事過較長時間和HDFS有關的研發(fā)與運維工作,也正是在這段時期提升了自己分布式系統(tǒng)架構設計的能力,同時還掌握了較為豐富的一線集群管理經驗。希望能夠將這些總結和個人的理解分享給讀者。
盡管市面上存在一些和Hadoop相關的圖書,但調研后發(fā)現大多數書中內容較淺,缺乏廣度和系統(tǒng)性。希望本書可以彌補這些遺憾。
1. 讀者對象
本書適合以下讀者閱讀。
1)大數據從業(yè)者,如中高級開發(fā)人員、架構師、技術經理。
2)想要系統(tǒng)學習分布式架構設計的技術人員和運維人員。
3)想要提高分布式系統(tǒng)研發(fā)水平的人員。
4)目前在云計算領域工作,想要拓寬自己技術能力的專業(yè)人員。
5)在高校學習的研究生,或有一定基礎的高年級本科生。
2. 本書特色
(1)技術點系統(tǒng)、全面
本書以Hadoop HDFS主流的版本為基準,選擇由淺入深的方式,全面細致地介紹了構成分布式存儲系統(tǒng)的各項關鍵組成部分。為照顧到不同層次的讀者,每章都配置了原理解析、流程分析圖,以及必要的實踐指導。
(2)具備較高的實用指導價值
在編寫本書前,作者收集了很多行業(yè)內從業(yè)者在集群維護過程中遇到的痛點。書中選用的案例均來源于現實或非常典型的案例,對應的解題思路和實踐方案均得到驗證,具有很強的實用性,方便讀者查閱和參考。
(3)技術啟發(fā)性強
一本好的技術書籍,不應局限于介紹產品本身,還應與讀者產生共鳴,這也是作者希望看到的。作者在這里提醒讀者,在閱讀本書時要留意兩點:一是注意不同章節(jié)間的關聯;二是留意每章后面的拓展改進部分。
3. 本書內容
本書分為兩大篇,共10章。
第1章介紹成熟的分布式系統(tǒng)架構框架及其影響因素、Hadoop HDFS發(fā)展歷史、組件特色和包含的主要模塊。
第2章介紹元數據,包括元數據信息、結構分析、拓展優(yōu)化等。
第3章介紹HDFS管理存儲數據的方法,涉及眾多的內部運行原理、Namespace服務、數據節(jié)點服務等一些非常關鍵的部分。
第4章介紹Block和副本。詳細介紹了HDFS是如何管理它們及生命周期、數據自愈等?梢哉f理解了本章內容,就充分了解了數據在HDFS系統(tǒng)中的存在方式。
第5章介紹Client與不同節(jié)點服務的通信原理,以及數據讀寫流程。
第6章介紹高可用機制,包括QJM和HA實現原理、ZKFC服務、隔離機制,以及可改進的方法。
第7章介紹緩存在分布式系統(tǒng)中的實現方法,列舉了一些適用緩存的場景及后續(xù)版本的迭代計劃。
第8章介紹在使用過程中拓展集群的方法。詳細說明了水平拓展、垂直伸縮的策略及參考實現,非常具有實用指導價值。
第9章介紹想要實現合理的數據分層是如何做到的。這部分知識是超大集群維護過程中必須掌握的。
第10章介紹如何高效建設集群監(jiān)控體系、多租戶管控方法等。此外,還介紹了當下非常有價值的發(fā)展方向Data Lakes。
4. 如何閱讀本書
對于沒有接觸過分布式系統(tǒng)或大數據領域的讀者,建議按照順序從第1章開始閱讀。
對于了解過Hadoop部分原理的運維人員或初級開發(fā)者,建議也按照順序從第1章開始閱讀,這對于全面了解HDFS很有益處。
對于做過HDFS相關研發(fā)的中高級開發(fā)者,可選擇從第2章開始閱讀。
本書是按照由淺入深的方式編寫的,讀者在閱讀過程中,尤其是閱讀本書后面的章節(jié)時,應該加入自己的思考,這樣才可以達到事半功倍的學習效果。
5. 勘誤與支持
創(chuàng)作須始終保持嚴謹的態(tài)度,作者每完成一章都會反復核驗。奈何水平有限,書中難免會出現不足之處,在此懇請讀者批評指正。讀者如在書中遇到需要解答的地方,歡迎發(fā)送郵件至zhujh.inx@gmail.com,作者將盡可能回復每一封郵信。期待能夠得到讀者的真摯反饋!
6. 致謝
感謝機械工業(yè)出版社的張淑謙老師在這一年多的時間里始終支持我的寫作,并給予了非常多的幫助和建議。沒有他的鼓勵和幫助,這本書不會那么順利完成。
感謝Apache社區(qū)的小伙伴,是你們讓我學到更多。
后,感謝所有支持、鼓勵和幫助過我的人。謹以此書獻給我親愛的家人、朋友們!
祝江華
2022年初冬于杭州
祝江華,大數據技術專家。多年來一直供職于頭部互聯網公司,積累了較為豐富的大數據行業(yè)一線研發(fā)和集群維護經驗;熱愛開源,長期活躍在Apache開源社區(qū),對包括Hadoop生態(tài)在內的多款組件有過深入研究;分布式技術極客,擅長分布式存儲方向,同時對大數據計算、數據湖等也有豐富實戰(zhàn)經驗。
第1篇 核心原理篇
第1章 HDFS歷史延展/
1.1 分布式與文件系統(tǒng)/
1.1.1 分布式文件系統(tǒng)部署架構/
1.1.2 系統(tǒng)性能的影響因素/
1.2 HDFS設計及實現思想/
1.2.1 HDFS發(fā)展歷史/
1.2.2 HDFS特性/
1.2.3 HDFS服務視圖/
1.2.4 HDFS架構/
1.3 小結/
第2章 元數據架構/
2.1 內存Tree設計/
2.1.1 Namenode介紹/
2.1.2 Namenode啟動/
2.1.3 meta視圖/
2.1.4 FsDirectory和INodeMap/
2.1.5 文件維護/
2.2 FsImage和Edit Log/
2.2.1 FsImage分析/
2.2.2 Edit Log分析/
2.3 meta更新/
2.3.1 內存結構Update/
2.3.2 拓展:鎖優(yōu)化/
2.4 小結/
第3章 數據管理/
3.1 Namespace/
3.1.1 Namespace概況/
3.1.2 Namenode與Namespace/
3.1.3 DataNode與Namespace/
3.2 Slave節(jié)點/
3.2.1 Heartbeat機制/
3.2.2 FsDataset和DataStorage/
3.2.3 DataNode檢查器/
3.2.4 存儲類型/
3.2.5 拓展:NVDIMM/
3.3 Topology(Rack) Awareness/
3.3.1 Topology Awareness在分布式存儲中的意義/
3.3.2 Topology Awareness在HDFS中實現/
3.3.3 Topology改進/
3.4 小結/
第4章 Block與副本/
4.1 理解Block/
4.1.1 Block構成解析/
4.1.2 副本存儲解析/
4.2 Block狀態(tài)管理/
4.2.1 UnderConstruction/
4.2.2 Committed/
4.2.3 Complete/
4.2.4 UnderRecovery/
4.2.5 Block狀態(tài)小結/
4.3 副本狀態(tài)管理/
4.3.1 RBW/
4.3.2 finalized/
4.3.3 RWR/
4.3.4 RUR/
4.3.5 Temporary/
4.3.6 副本狀態(tài)小結/
4.4 Block管理/
4.4.1 無效Block/
4.4.2 損壞Block/
4.4.3 缺失與冗余Block/
4.4.4 Block Recovery/
4.5 副本策略/
4.5.1 位置策略/
4.5.2 選盤(Volume)策略/
4.5.3 選盤策略改進/
4.6 小結/
第5章 通信與訪問/
5.1 HDFS RPC/
5.1.1 Protocol Buffers介紹/
5.1.2 RPC架構/
5.1.3 非冪等訪問/
5.2 文件寫入/
5.2.1 數據包(packet)與Pipeline/
5.2.2 數據寫入/
5.2.3 Lease管理與pipeline Recovery/
5.3 數據訪問/
5.3.1 文件讀剖析/
5.3.2 short-circuit/
5.3.3 讀寫策略改進/
5.4 小結/
第6章 HA和QJM/
6.1 HA發(fā)展路徑/
6.2 Quorum Journal Manager/
6.2.1 分布式一致性原理/
6.2.2 Edit共享存儲系統(tǒng)/
6.2.3 QJM架構設計/
6.2.4 Edit Recovery/
6.3 HA原理/
6.3.1 ZKFC解析/
6.3.2 HA隔離機制/
6.3.3 Multi-Standby特性/
6.3.4 HA優(yōu)化及改進/
6.4 小結/
第7章 緩存/
7.1 分布式系統(tǒng)緩存設計/
7.1.1 本地緩存/
7.1.2 分布式緩存/
7.2 集中式緩存管理/
7.2.1 原理介紹/
7.2.2 緩存調度/
7.2.3 DataNode緩存原理/
7.2.4 Cache&Uncache場景/
7.3 緩存實踐場景及改進/
7.3.1 實踐場景介紹/
7.3.2 集中式緩存V2/
7.4 小結/
第2篇 拓展與實踐篇
第8章 集群拓展/
8.1 水平拓展/
8.1.1 水平拓展策略及實踐/
8.1.2 Router-Based Federation/
8.2 垂直伸縮/
8.2.1 垂直伸縮策略及實踐/
8.2.2 HDFS Quotas/
8.3 多Namespace業(yè)務規(guī)劃/
8.4 小結/
第9章 數據分層/
9.1 存儲分層的意義/
9.2 HDFS存儲分層/
9.2.1 冷熱集群分層管理/
9.2.2 異構分層存儲/
9.2.3 動態(tài)感知數據類型/
9.3 糾刪碼(Erasure Coding)/
9.3.1 EC使用介紹/
9.3.2 常見EC算法介紹/
9.3.3 EC讀寫解析/
9.4 數據遷移/
9.4.1 DistCp遷移/
9.4.2 FastCopy遷移/
9.5 小結/
第10章 監(jiān)控、多租戶和數據湖/
10.1 大數據監(jiān)控/
10.1.1 基礎設施監(jiān)控采集/
10.1.2 故障自愈/
10.2 多租戶與認證/
10.2.1 多租戶存儲規(guī)劃/
10.2.2 基于Kerberos的認證/
10.2.3 基于Delegation Token的認證/
10.3 HDFS與Data Lakes/
10.4 小結/