本書是大數據技術普及系列讀物之一,主要涉及大數據采集、分布式文件存儲和非關系型數據管理等內容。全書共6章,每章一個專題,按照大數據運用流程,從網頁和日志文件兩種常用的大數據采集方法入手,介紹了分布式文件存儲、NoSQL數據庫基礎理論和4種NoSQL數據庫技術。針對特定技術選擇了一款最典型的產品進行詮釋,先后對Python語言中的Requests和BeautifulSoup包,Hadoop生態中的Flume、HDFS和HBase,以及Redis、MongoDB和Neo4j等產品進行了介紹。在每章結構上,按照要做什么(需求背景)、是什么(產品功能和特性)、為什么(體系結構/數據模型)和怎么做(基本操作)?4個方面遞進展開,內容相對獨立,方便讀者根據自身需要選擇章節進行閱讀。
全書內容相對淺顯,具有較強的可讀性,適合對大數據技術感興趣,希望從技術和產品層面對大數據采集、存儲和管理進行初步學習的讀者閱讀。
近年來,“大數據”一詞成為人們生活中的高頻詞。無論在教育界,還是工業界,乃至政府機關,在諸多正式或非正式的場合,都涉及大數據的學習與應用。編者認為,對“大數據”至少應從數據、技術和理念三個層面來理解。在數據層面,大數據就是一堆數據,即超出傳統系統處理能力的海量數據;在技術層面,大數據背后有一系列的技術和產品支撐,包括數據的采集、存儲、管理和分析挖掘等;在理念層面,大數據就是“以數據為大”,小企業注重分析挖掘數據價值,大企業數據視為核心資產。
從數據和理念層面來看,大數據已為人所熟知,但技術層面則因其專業性強,閱讀門檻高,很多概念、產品和知識尚需推廣普及。本書采用簡單易懂的科普方式,將大數據采集、分布式文件存儲、各種新型數據庫管理技術等知識呈現給讀者。在整體內容上,本書涵蓋網絡爬蟲、日志文件采集、分布式文件存儲、NoSQL技術、文檔數據庫、列族數據庫和圖數據庫等知識,覆蓋了大數據的采集、存儲和管理的方方面面。
本書編寫時特別注意了3點。一是每章在內容上相對獨立,每章都可以獨立地作為一個專題,而不需要其他章節內容的支撐。當然,如果能夠按順序閱讀,體驗會更好。二是選擇主流、典型的開源產品來闡述特定技術。例如,分布式文件存儲的HDFS、列族數據庫HBase、文檔數據庫MongoDB和圖數據庫Neo4j等,都是本領域最為流行的開源產品。針對某種產品,選擇其次新版進行介紹,兼顧了時效性和穩定性。三是輔以必要的操作來“感性”地體現產品的特性和功能,操作流程和結果體現“知其然”;對一些經典的產品如HDFS和HBase,還給出了一些“所以然”的知識,供讀者深入閱讀。
本書適合對大數據技術感興趣,希望從技術層面對大數據采集、存儲和管理技術有初步了解的學生和企事業工作人員閱讀,也可作為計算機相關人員的補充讀物。
本書所涉及的內容都是目前工業界流行的技術和產品,相關資料眾多,加之編者水平有限,書中可能還存在不足之處,懇請廣大讀者不吝賜教。
編 者
2023年2月
第1章 大數據采集 1
1.1 概述 1
1.2 網頁數據的爬取 3
1.2.1 網絡爬蟲概述 3
1.2.2 網絡爬蟲的實現 5
1.2.3 網頁爬取策略 12
1.3 日志文件的采集 13
1.3.1 Apache軟件組織 13
1.3.2 文件采集工具Flume 14
1.3.3 實驗:Flume的使用方法 16
小結 18
第2章 分布式文件存儲 19
2.1 Hadoop概述 19
2.1.1 Hadoop的誕生與發展 19
2.1.2 Hadoop生態系統 21
2.1.3 Hadoop版本演進 23
2.1.4 Hadoop的發行版本 25
2.2 HDFS分布式文件系統 25
2.2.1 HDFS概述 25
2.2.2 HDFS設計思想 26
2.2.3 HDFS實現機制 28
2.2.4 HDFS數據讀取和寫入 32
2.2.5 HDFS文件操作方式 35
2.3 HDFS分布式部署實戰 38
2.3.1 虛擬化技術 38
2.3.2 實驗設計 41
2.3.3 實驗過程 42
小結 50
第3章 NoSQL數據庫 51
3.1 數據管理技術的發展 51
3.2 關系型數據庫技術 53
3.3 NoSQL技術概述 58
3.3.1 傳統數據庫面臨的挑戰 58
3.3.2 NoSQL技術的特點 58
3.3.3 NoSQL的理論基礎 61
3.4 常見的NoSQL數據庫 62
3.4.1 NoSQL數據庫的分類 62
3.4.2 鍵值數據庫 64
小結 67
第4章 列族數據庫 69
4.1 概述 69
4.2 HBase數據模型 70
4.2.1 列族數據模型 70
4.2.2 一個網頁的數據實例 75
4.3 HBase體系結構 76
4.4 常用命令 79
4.4.1 表操作 80
4.4.2 數據操作 82
小結 84
第5章 文檔數據庫 85
5.1 以文檔進行數據存儲 85
5.1.1 文本文件 85
5.1.2 常用的數據存儲和交換文件類型 86
5.1.3 用數據庫管理文檔 89
5.2 MongoDB文檔數據庫 89
5.2.1 概述 90
5.2.2 數據模型 91
5.2.3 BSON數據存儲 94
5.3 MongoDB的常用操作 96
5.3.1 安裝部署 96
5.3.2 數據庫操作 97
5.3.3 集合操作 99
5.3.4 索引操作 107
小結 109
第6章 圖數據庫 110
6.1 概述 110
6.2 圖模型 112
6.2.1 圖論 112
6.2.2 網絡模型 113
6.2.3 圖數據庫 115
6.3 圖數據的存儲 116
6.3.1 鄰接矩陣 117
6.3.2 鄰接表 118
6.4 圖數據的檢索 118
6.5 圖數據庫Neo4j 119
6.5.1 概況 119
6.5.2 安裝使用 120
小結 123
參考文獻 124