大數據技術及應用 — 基於 Python 語言
內容描述
目前,社會對大數據工程技術人才的需求大大增加,因此向電腦和電子信息類相關專業學生傳授大數據知識和技術方法,提高他們在各領域應用大數據的能力具有重大意義。本書共9章,圍繞大數據的基本概念和大數據處理的主要環節編寫。第1章主要介紹大數據的概念、特點和構成;第2章主要介紹在Windows系統中安裝Linux虛擬機及構建Hadoop分佈式集群的方法;第3章主要介紹大數據採集工具的使用及數據預處理的常用方法;第4章首先介紹Hadoop的發展歷史、軟件生態、核心組件和命令結構,然後以HDFS為重點,介紹其體系結構和特點,並詳細介紹HDFS的交互式命令;第5章介紹大數據環境下存儲工具HBase的數據模型;第6章介紹Hive的存儲模型,第7章介紹在Hadoop平臺上利用Python設計MapReduce程序的基本思路;第8章介紹大數據分析與挖掘過程中的常用算法;第9章介紹數據可視化的常用方法及常用工具。本書的內容與實際應用緊密結合,目的是讓讀者能瞭解大數據的基本概念、理解大數據技術的基本原理、初步掌握大數據處理和分析的基本方法,為未來應用大數據思維和大數據分析方法解決工作中的實際問題打下良好的基礎。本書適合作為高等學校電腦類和電子信息類相關專業大數據技術相關課程的教材,可供本科生、研究生使用,同時也適合對大數據技術感興趣的廣大讀者進行自學和實踐時使用。
目錄大綱
第1章 緒論 1
1.1 大數據的基本概念 1
1.2 大數據的價值和作用 4
1.3 大數據帶來的思維方式變革 7
1.4 大數據處理技術基礎 9
1.4.1 大數據處理的主要環節 9
1.4.2 大數據的技術支撐 11
1.4.3 流行的大數據技術 13
1.5 大數據面臨的技術挑戰 15
1.6 本章小結 16
1.7 習題 16
第2章 大數據實驗環境構建 18
2.1 在Windows中安裝Linux虛擬機 18
2.1.1 創建虛擬機 19
2.1.2 虛擬機啟動初始化 21
2.1.3 克隆虛擬機 22
2.2 Linux操作基礎 23
2.2.1 軟件包管理工具 23
2.2.2 目錄和文件操作 24
2.2.3 用戶和權限管理命令 25
2.2.4 修改文件的訪問權限 25
2.2.5 壓縮和解壓縮 27
2.2.6 網絡配置命令 27
2.2.7 系統服務命令 28
2.2.8 查找命令 29
2.3 建立Linux集群 29
2.3.1 VMware Workstation的網絡模式簡介 30
2.3.2 集群規劃和網絡設置 31
2.3.3 配置虛擬機的網絡參數 33
2.3.4 關閉防火牆和SELinux 36
2.3.5 SSH免密登錄 37
2.4 Hadoop系統簡介 41
2.4.1 Hadoop的生態系統 41
2.4.2 Hadoop集群的類型 42
2.5 構建Hadoop“偽分佈式”集群 42
2.5.1 安裝JDK 42
2.5.2 安裝Hadoop軟件 44
2.5.3 配置SSH免密登錄 45
2.5.4 配置Hadoop 45
2.5.5 啟動Hadoop 48
2.6 構建“完全分佈式”Hadoop集群 49
2.6.1 配置Hadoop集群的主節點 49
2.6.2 將配置文件發送到從節點 52
2.7 測試Hadoop集群 52
2.7.1 測試HDFS 52
2.7.2 測試WordCount程序 56
2.8 安裝Zookeeper 57
2.8.1 在“偽分佈”模式下安裝Zookeeper 57
2.8.2 在“完全分佈”模式下安裝Zookeeper 58
2.9 用Ambari構建和管理Hadoop集群 60
2.9.1 安裝Ambari 61
2.9.2 用Ambari管理和配置Hadoop集群 61
2.10 本章小結 63
2.11 習題與實驗 63
第3章 大數據採集與預處理 66
3.1 大數據採集概述 66
3.1.1 大數據的來源 66
3.1.2 數據容量的單位 67
3.1.3 大數據採集的基本方法 67
3.2 常用的大數據採集工具簡介 68
3.2.1 基於Python的網頁採集框架Scrapy 69
3.2.2 日誌收集工具Flume 74
3.3 數據屬性的類型 79
3.3.1 “屬性”的類型 79
3.3.2 屬性類型的轉換 80
3.4 數據預處理 80
3.4.1 數據變換 81
3.4.2 數據清洗 84
3.4.3 使用OpenRefine清洗數據 86
3.4.4 數據集成 89
3.5 本章小結 91
3.6 習題 91
第4章 Hadoop分佈式文件系統 94
4.1 Hadoop 94
4.1.1 Hadoop的發展歷史 95
4.1.2 Hadoop的優勢 96
4.1.3 Hadoop生態 96
4.1.4 Hadoop的核心組件 97
4.1.5 Hadoop集群與資源管理 99
4.1.6 Hadoop命令結構 102
4.2 HDFS體系結構 104
4.2.1 HDFS的設計目標 104
4.2.2 HDFS中的NameNode和DataNodes 105
4.2.3 文件系統命名空間(The File System Namespace) 108
4.2.4 數據容錯 108
4.2.5 副本的管理與使用 109
4.3 HDFS初探 110
4.3.1 開始HDFS旅程 110
4.3.2 添加數據文件 111
4.3.3 從HDFS中下載文件 111
4.3.4 關閉HDFS 111
4.3.5 利用Web Console訪問HDFS 111
4.4 HDFS常用CLI命令 113
4.4.1 HDFS CLI總覽 113
4.4.2 常用HDFS文件操作命令 115
4.5 利用pyhdfs實現HDFS的文件訪問 119
4.5.1 pyhdfs的安裝與應用案例 120
4.5.2 pyhdfs的HdfsClient類 120
4.6 pyhdfs應用實戰 133
4.7 本章小結 135
4.8 習題與實驗 135
第5章 HBase基礎與應用 137
5.1 HBase簡介 137
5.2 HBase安裝 138
5.3 HBase初探 139
5.4 HBase的數據模型 143
5.4.1 HBase數據模型相關術語 143
5.4.2 概念模式/視圖(Conceptual View) 145
5.4.3 物理模式/視圖(Physical View) 146
5.4.4 命名空間(Namespace) 147
5.5 HBase Shell 147
5.5.1 HBase Shell概述 147
5.5.2 創建表(create) 149
5.5.3 修改表/列族(alter table / column family) 153
5.5.4 添加數據(put) 155
5.5.5 獲取行或單元(get) 156
5.5.6 掃描並輸出數據(scan) 157
5.5.7 統計表的行數(count) 158
5.5.8 刪除指定值(delete) 159
5.5.9 其他常用shell命令 160
5.5.10 HBase Shell中的對象引用 162
5.6 利用Jython實現HBase的訪問 162
5.6.1 Jython環境設置 162
5.6.2 Jython訪問HBase 163
5.6.3 利用scan變量HBase中的數據 164
5.7 本章小結 165
5.8 習題與實驗 165
第6章 Hive基礎與應用 167
6.1 Hive簡介 167
6.1.1 數據庫與數據倉庫 168
6.1.2 Hive體系結構與接口 168
6.2 Hive的存儲模型 169
6.3 Hive初探 171
6.4 Hive的數據定義―DDL 175
6.4.1 數據庫的相關操作 175
6.4.2 數據表的創建 177
6.4.3 數據表和分區的修改 182
6.4.4 數據表的其他操作 189
6.5 Hive的數據操縱――DML 194
6.6 Hive的數據檢索――Hive-QL 201
6.7 本章小結 206
6.8 習題與實驗 207
第7章 分佈式計算框架MapReduce 209
7.1 MapReduce概述 209
7.1.1 第一個MapReduce的Python程序 210
7.1.2 MapReduce工作原理 212
7.1.3 MapReduce作業的工作流程 212
7.1.4 MapReduce的輸入/輸出 214
7.2 WordCount實例詳解 214
7.2.1 WordCount程序源碼 214
7.2.2 WordCount程序執行 215
7.2.3 WordCount程序原理 216
7.3 Hadoop Streaming 217
7.3.1 Hadoop Streaming的工作原理 218
7.3.2 打包提交作業 218
7.3.3 Streaming工具的用法 219
7.3.4 常見問題應用技巧 222
7.4 MapReduce作業管理 223
7.5 MapReduce Python代碼的測試 225
7.6 利用Python的迭代器和生成器優化wordCount程序 227
7.6.1 Python中的迭代器 227
7.6.2 Python中的生成器 228
7.6.3 itertools模塊 229
7.6.4 優化wordCount程序 232
7.7 MapReduce程序設計模式 233
7.7.1 數據集介紹 233
7.7.2 聚合查詢模式(Summarization Patterns) 235
7.7.3 過濾模式(Filtering Patterns) 241
7.7.4 數據連接模式(Join Patterns) 245
7.8 用MRJob庫編寫MapReduce程序 250
7.8.1 第一個MRJob程序 250
7.8.2 MRJob應用詳解 253
7.8.3 MRJob的協議 256
7.8.4 MRJob的其餘設置 259
7.9 本章小結 260
7.10 習題與實驗 261
第8章 大數據分析與挖掘 262
8.1 數據的描述性分析 262
8.1.1 數據的集中趨勢度量 262
8.1.2 數據的離散趨勢度量 263
8.1.3 數據的偏態特性度量 266
8.1.4 數據相關性計算 267
8.2 回歸分析 271
8.2.1 一元線性回歸(Linear Regression) 271
8.2.2 其他類型的回歸模型 274
8.3 分類算法簡介 275
8.3.1 邏輯回歸 275
8.3.2 近鄰分類算法 277
8.3.3 決策樹算法 279
8.4 聚類算法簡介 285
8.4.1 主要的聚類算法類型 285
8.4.2 聚類質量度量指標 286
8.4.3 k-Means算法 288
8.5 分佈式大數據挖掘算法典型案例 290
8.6 本章小結 295
8.7 習題與實驗 296
第9章 大數據可視化 298
9.1 引言 298
9.2 大數據可視化的常用方法 300
9.2.1 趨勢型大數據可視化方法 300
9.2.2 對比型大數據可視化方法 302
9.2.3 比例型大數據可視化方法 304
9.2.4 分佈型大數據可視化 305
9.2.5 文本大數據可視化 306
9.2.6 關係網絡大數據可視化 307
9.2.7 時空大數據可視化 308
9.2.8 層次結構大數據可視化 309
9.2.9 高維大數據可視化 310
9.3 大數據可視化常用工具簡介 311
9.3.1 Tableau大數據可視化工具簡介 312
9.3.2 Python的Matplotlib庫簡介 314
9.4 基於ECharts的可視化示例 318
9.4.1 ECharts使用準備 319
9.4.2 ECharts 基礎概念概覽 320
9.4.3 ECharts示例 320
9.5 本章小結 326
9.6 習題與實驗 326
附錄A HDFS交互命令 328
附錄B pyhdfs其他類說明 339
參考文獻 344
作者介紹
嚴宣輝,男,福建師範大學數學與信息學院副教授、理學博士,碩士生導師,數字福建環境監測物聯網實驗室副主任、福建省人工智能學會理事。
先後擔任過學院實驗室主任、公共計算機教研室主任和計算機科學系主任等工作。福建省精品在線開放課程"大數據導論”負責人,該課程已在中國大學MOOC、優課聯盟等慕課平台上開課三個學期以上,吸引了大量學生參加學習,得到了學習者的廣泛好評。