《自己動手做大數據系統(第2版)》在本書第1版的基礎上,按照離線大數據和流式大數據兩個場景進行劃分。在代碼實現上以Python為主,緊貼主流程式語言。
基本介紹
- 中文名:自己動手做大數據系統(第2版)
- 作者:劉未昕、張粵磊、張魁、吳茂貴
- 類別:計算機
- 出版社:電子工業出版社
- 出版時間:2020年4月
- 頁數:356 頁
- 定價:79 元
- 開本:16 開
- ISBN:9787121382024
內容簡介,圖書目錄,作者簡介,
內容簡介
《自己動手做大數據系統(第2版)》以離線大數據和流式大數據兩個具體示例,貫穿本書的第二、三部分內容,對組件之間的協同工作關係進行剖析。
圖書目錄
第一部分 大數據概述
第1章 大數據的時代背景及套用落地2
1.1 大數據與“雲大物區智”的關聯 2
1.2 大數據平台的套用優勢 4
1.3 大數據平台的技術架構選型和產品對比 4
第2章 大數據系統的安裝及配置7
2.1 伺服器及作業系統的準備 7
2.2 JDK、Python和Scala 8
2.3 Hadoop 12
2.3.1 安裝環境的確認及檔案準備 16
2.3.2 配置環境變數及無密碼傳輸 16
2.3.3 配置Hadoop的對應參數 18
2.3.4 啟動並驗證Hadoop 20
2.4 Sqoop 20
2.4.1 Sqoop安裝檔案的準備 22
2.4.2 Sqoop的安裝及配置 23
2.4.3 Sqoop運行驗證 24
2.5 Hive 25
2.5.1 安裝檔案的準備 26
2.5.2 配置環境變數和安裝MySQL 26
2.5.3 配置Hive參數 26
2.5.4 驗證Hive的相關服務 29
2.6 ZooKeeper和HBase 29
2.6.1 ZooKeeper安裝檔案的準備 30
2.6.2 ZooKeeper的安裝及配置 30
2.6.3 ZooKeeper運行驗證 31
2.6.4 HBase安裝檔案的準備31
2.6.5 HBase的安裝及配置 31
2.6.6 HBase運行驗證 32
2.7 Flume 33
2.8 Kafka 35
2.9 Spark 37
2.9.1 Spark安裝檔案的準備 38
2.9.2 Spark的安裝及配置 38
2.9.3 Spark運行驗證 39
2.10 Flink 39
2.11 開源大數據系統各組件的組合 40
2.12 CDH 41
2.13 FusionInsight 42
2.14 小結 44
第二部分 離線大數據處理
第3章 使用Python爬蟲獲取數據 47
3.1 Python爬蟲模組的安裝 47
3.1.1 requests模組的安裝及驗證47
3.1.2 Beautiful Soup模組的安裝及驗證 47
3.2 抓取並解析JSON數據 49
3.2.1 利用Fiddler找出所抓取的網址 49
3.2.2 解析JSON對象 51
3.3 抓取並解析HTML中的數據 52
3.3.1 使用Beautiful Soup提取網頁內容 52
3.3.2 保存抓取內容 53
3.3.3 不同爬蟲模組所適用的場景 55
3.4 使用Python提取文章的關鍵字 55
3.4.1 中文分詞和關鍵字的提取 55
3.4.2 Python的中文分詞模組jieba 56
3.4.3 使用自定義詞典和停用詞 57
3.4.4 提取文章的關鍵字 58
3.5 小結 60
第4章 Hive在大數據中的角色 61
4.1 Hive的核心概念及配置使用 61
4.1.1 Hive在大數據生態系統中的作用 61
4.1.2 Hive的幾種使用方法 62
4.1.3 使用Tez引擎替代MapReduce 65
4.2 概要設計和物理模型的創建 68
4.2.1 使用Hive要解決哪些問題 68
4.2.2 資料庫的概要設計 68
4.2.3 物理模型的定義及創建表 73
4.3 載入爬蟲數據 79
4.4 數據的合併、去重和轉換 80
4.4.1 數據的合併 80
4.4.2 利用臨時表去掉重複的數據 81
4.4.3 使用Hive內置函式轉換數據 83
4.5 使用UDF實現數據的轉換 84
4.5.1 用戶自定義函式的實現原理 84
4.5.2 利用Python實現UDF 84
4.5.3 數據進入rpt表 87
4.6 使用Python操作Hive 89
4.6.1 安裝impyla模組 89
4.6.2 使用Python讀取數據示例 89
4.7 ETL數據調度和數據治理90
4.7.1 數據處理的自動化 90
4.7.2 數據治理 95
4.8 小結 96
第5章 使用HBase實現大數據存儲 97
5.1 非關係型資料庫及HBase 97
5.2 HBase的幾個核心概念 98
5.3 HBase數據操作命令 99
5.3.1 HBase客戶端99
5.3.2 創建表及插入數據 100
5.3.3 按照行鍵值檢索 102
5.3.4 掃描檢索 102
5.3.5 刪除表和數據 104
5.4 使用Python操作HBase 107
5.4.1 啟動HBase Thrift Server 107
5.4.2 安裝happybase模組 107
5.4.3 插入數據及刪除數據 107
5.4.4 組合查詢代碼示例 109
5.5 把Hive數據導入HBase 110
5.6 用Hive外部表讀取HBase數據 111
5.7 小結 112
第6章 Spark數據分析引擎 113
6.1 Spark簡介 113
6.2 Spark集群的配置及啟動 114
6.2.1 Spark集群的安裝與配置 115
6.2.2 作業提交方式 116
6.2.3 操作界面的啟動類型 117
6.2.4 三類Web監控界面 119
6.3 調用Hive數據 121
6.3.1 使用beeline客戶端 121
6.3.2 使用HiveContext對象 122
6.3.3 使用Spark SQL 123
6.3.4 使用JDBC 123
6.4 調用HBase數據 123
6.4.1 設定環境變數 123
6.4.2 讀數據示例 124
6.5 使用PySpark進行數據分析 126
6.5.1 將RDD轉換為DataFrame 127
6.5.2 Spark SQL等值連線 129
6.5.3 使用matplotlib繪製直方圖 129
6.6 小結 130
第7章 使用Flask實現數據展示 131
7.1 Flask框架簡介及站點搭建流程 131
7.2 Flask微框架的特性 132
7.3 使用MVC模式搭建項目框架 133
7.3.1 訪問地址 133
7.3.2 MVC模式簡介 133
7.3.3 項目目錄結構 134
7.4 檢索及載入新聞數據 135
7.4.1 模型層的開發 135
7.4.2 模型層的單元測試 136
7.4.3 控制器層的開發 138
7.4.4 控制器層的單元測試 139
7.4.5 視圖層的開發 140
7.5 小結 141
第二部分技術點總結141
第三部分 流式大數據處理
第8章 使用Flume獲取網站訪問日誌 145
8.1 Flume的安裝及數據流模型 145
8.1.1 Flume簡介及安裝 145
8.1.2 Flume的數據流模型 146
8.2 核心組件的配合使用 146
8.2.1 6種核心組件 146
8.2.2 配置檔案 147
8.2.3 flume-ng命令148
8.3 各種數據組合的流動方式 150
8.3.1 將日誌收集至檔案 150
8.3.2 Sink的多路復用 152
8.3.3 使用Avro作為數據源 154
8.3.4 Channel的多路復用 155
8.4 Apache伺服器的日誌格式 158
8.5 合併兩個網站的日誌 160
8.6 小結 162
第9章 Kafka的安裝、配置及其與Flume的整合 163
9.1 Kafka的特性及安裝、配置 163
9.1.1 Kafka的特性和適用場合 163
9.1.2 安裝、配置Kafka 164
9.2 幾種術語 166
9.3 Broker的使用方法 167
9.3.1 單節點單Broker 168
9.3.2 單節點多Broker 169
9.3.3 分散式Broker172
9.3.4 分區及偏移量 174
9.3.5 分區選擇策略 176
9.4 分散式生產者/消費者 176
9.4.1 兩個生產者 176
9.4.2 消費者組 177
9.5 Kafka Connector180
9.5.1 File Source 181
9.5.2 File Sink 182
9.6 Kafka和Flume的整合 183
9.6.1 給Flume提供數據183
9.6.2 從Flume中獲取數據 184
9.7 使用Python連線Kafka 186
9.8 小結 187
第10章 Redis資料庫簡介 188
10.1 Redis的特點及適用場景 188
10.2 Redis的安裝及命令行使用方法 188
10.2.1 Redis的安裝及啟動 188
10.2.2 命令行客戶端 189
10.2.3 5種數據類型 190
10.2.4 字元串命令 191
10.3 使用Python操作Redis 193
10.4 使用Java操作Redis 194
10.5 小結 195
第11章 Flink簡介及其與Kafka的整合 196
11.1 Flink概述及其與Spark的區別 196
11.2 Flink的架構、特性及工作流程 196
11.3 Flink的安裝 199
11.3.1 單節點的安裝 199
11.3.2 集群的安裝 201
11.3.3 利用ZooKeeper實現Flink的高可用性 203
11.4 Flink的作業提交方式 205
11.4.1 以Standalone方式運行 205
11.4.2 利用YARN Session運行 207
11.4.3 利用Python調用Flink服務212
11.4.4 使用REST API查看狀態 213
11.5 Flink-Kafka Connector 214
11.5.1 Flink為Kafka提供數據 215
11.5.2 Flink從Kafka接收數據 219
11.6 使用Flink統計PageView 221
11.6.1 Flink開發的一般步驟 221
11.6.2 Flink DataStream API 221
11.6.3 將數據落地至Redis和HBase 227
11.7 小結 235
第12章 網站頁面訪問量的動態展示 236
12.1 百度的ECharts圖表功能簡介 236
12.2 頁面訪問量的動態統計 238
12.2.1 模型層的開發 239
12.2.2 控制器層的開發 242
12.2.3 視圖層的開發 242
12.3 生成詞雲圖和占比餅圖 245
12.3.1 詞雲圖模型層的開發 245
12.3.2 詞雲圖控制器層的開發 248
12.3.3 詞雲圖視圖層的開發 249
12.3.4 關鍵字餅圖的模型層開發 249
12.3.5 關鍵字餅圖的控制器層開發 250
12.3.6 關鍵字餅圖的視圖層開發 251
12.4 訪問日誌檢索 252
12.5 小結 253
第三部分技術點總結253
第四部分 雲平台搭建
第13章 搭建基於雲平台的容器級數據系統 256
13.1 雲平台 256
13.1.1 雲平台架構 256
13.1.2 雲平台的搭建及部署 259
13.1.3 雲平台的高級配置 303
13.2 基於雲平台的容器集群 309
13.2.1 Magnum 309
13.2.2 Docker Swarm 311
13.2.3 Mesos和Marathon的結合316
13.2.4 Kubernetes 323
13.3 基於容器的大數據系統 331
13.4 小結 339
作者簡介
劉未昕
從事IT研發和項目管理工作十餘年。使用多種主流程式設計語言,深耕於大數據套用及人工智慧技術,多年從事金融、數據倉庫、智慧醫療等領域的研發工作。5年以上IT行業授課、培訓經驗,並在多所高校擔任外聘講師。
張粵磊
平安壹錢包前大數據架構師。業內知名大數據專家,多本大數據暢銷書的作者。2016年以來,其每年都以高級專家和諮詢顧問的身份深入參與大數據、人工智慧技術在行業的落地套用工作。已完成企業培訓數百場,培訓學員數萬名,在數據人才實戰型、場景型培訓培養方面具有豐富的實踐經驗。
張 魁
虛擬化工程師,OpenStack架構師,蘇州某高校雲平台架構師,十餘年Linux系統運維實踐及虛擬化開發經驗,4年Linux系統補丁開發經驗。先後在美企擔任虛擬化套用運維、伺服器集群開發運維工程師或系統開發架構師,高校信息中心雲平台架構師,主要關注OpenStack、Docker及分散式存儲等。
吳茂貴
運籌學與控制論專業研究生學歷。畢業後主要參與數據倉庫、商務智慧型等方面的項目,期間做過數據處理、數據分析、數據挖掘等工作,行業涉及金融、物流、製造業等。近期主要做複雜數據存儲、清理、轉換等工作,同時在大數據方面也很有興趣並投入大量時間和精力,且將持續為之。