本書為“1+X”職業(yè)技能等級證書配套教材,按國家1+X 證書制度試點大數據平臺運維職業(yè)技能等級標準編寫。本書從大數據平臺運維工程師的角度,由淺入深、全方位地介紹了大數據平臺運維的相關實踐知識和核心實操。本書共六部分,包括21章:第一部分,大數據平臺架構,涉及大數據的特點及發(fā)展趨勢、大數據的實施和運維流程、大數據的應用場景與案例;第二部分,大數據平臺高可用(HA)集群部署,涉及Hadoop集群基礎環(huán)境的配置、Hadoop HA集群的配置、Hadoop HA集群的啟動;第三部分,大數據組件的維護,涉及HBase組件的維護、Hive組件的維護、ZooKeeper組件的維護、ETL組件的維護、Spark組件的維護;第四部分,大數據平臺優(yōu)化,涉及Linux系統(tǒng)優(yōu)化、HDFS配置優(yōu)化、MapReduce配置優(yōu)化、Spark配置優(yōu)化;第五部分,大數據平臺的診斷與處理,涉及Hadoop及生態(tài)圈組件負載均衡的診斷與處理、集群節(jié)點故障的診斷與處理、集群組件服務故障的診斷與處理;第六部分,大數據平臺項目綜合案例,涉及數據倉庫運維項目實戰(zhàn)、金融行業(yè)運維項目實戰(zhàn)、典型大數據平臺監(jiān)控運維項目實戰(zhàn)。本書可作為中職院校和高職院校大數據及計算機類相關專業(yè)的教材,也可作為大數據平臺運維人員的參考用書。
紫光股份旗下新華三集團作為數字化解決方案領導者,致力于成為客戶業(yè)務創(chuàng)新、數字化轉型最可信賴的合作伙伴。新華三擁有計算、存儲、網絡、5G、安全等全方位的數字化基礎設施整體能力,提供云計算、大數據、人工智能、工業(yè)互聯網、信息安全、智能聯接、新安防、邊緣計算等在內的一站式數字化解決方案,以及端到端的技術服務。同時,新華三也是HPE?服務器、存儲和技術服務的中國獨家提供商。
目錄
第一部分 大數據平臺架構
第1章 大數據的特點及發(fā)展趨勢 2
1.1 大數據平臺架構概述 2
1.1.1 大數據的概念 2
1.1.2 大數據的特征 3
1.1.3 大數據的處理流程及相關
技術 4
1.1.4 大數據平臺架構的特點 5
1.2 大數據平臺架構的原理 5
1.3 大數據的發(fā)展歷程 6
1.3.1 大數據的具體發(fā)展過程 6
1.3.2 大數據技術的具體發(fā)展歷程 7
1.4 大數據的發(fā)展趨勢 8
1.4.1 大數據技術面臨的挑戰(zhàn) 8
1.4.2 大數據應用的發(fā)展趨勢 10
1.5 本章小結 11
第2章 大數據的實施和運維流程 12
2.1 大數據實施和運維工程師的
工作職責 12
2.1.1 大數據職位體系 12
2.1.2 大數據實施工程師的
工作職責 14
2.1.3 大數據運維工程師的
工作職責 15
2.2 大數據實施和運維工程師的
工作能力素養(yǎng)要求 15
2.2.1 大數據實施工程師的
工作能力素養(yǎng)要求 15
2.2.2 大數據運維工程師的
工作能力素養(yǎng)要求 16
2.3 大數據項目實施的工作流程 18
2.3.1 大數據項目規(guī)劃階段 18
2.3.2 大數據項目數據治理階段 19
2.3.3 大數據項目設計階段 20
2.3.4 大數據項目數據應用階段 21
2.3.5 大數據項目迭代實施與
應用推廣階段 22
2.4 大數據運維的日常工作 23
2.4.1 應急處置 23
2.4.2 故障報告 24
2.4.3 故障檢查 24
2.4.4 故障診斷 25
2.4.5 故障測試與修復 25
2.5 本章小結 26
第3章 大數據的應用場景與案例 27
3.1 大數據平臺架構的典型
行業(yè)應用場景 27
3.1.1 醫(yī)療行業(yè)的應用 27
3.1.2 金融行業(yè)的應用 28
3.1.3 零售行業(yè)的應用 29
3.1.4 地產行業(yè)的應用 29
3.1.5 農業(yè)的應用 30
3.1.6 政務和智慧城市的應用 30
3.1.7 教育行業(yè)的應用 30
3.1.8 環(huán)境行業(yè)的應用 30
3.2 大數據平臺架構的典型
企業(yè)應用場景 30
3.2.1 輿情分析 31
3.2.2 商業(yè)智能 31
3.3 Hadoop生態(tài)圈中行業(yè)應用的
典型實戰(zhàn)案例 32
3.3.1 電信行業(yè)——中國移動
基于Hadoop的大數據應用 32
3.3.2 金融行業(yè)——VISA公司
的Hadoop應用案例 33
3.3.3 電商行業(yè)——eBay網站
的Hadoop應用案例 33
3.4 Hadoop生態(tài)圈中企業(yè)應用的
典型實戰(zhàn)案例 33
3.4.1 新華三大數據集成平臺
在大地影院的應用案例背景 33
3.4.2 大地的應用案例的用戶
痛點分析 34
3.4.3 大地的應用案例的項目需求 34
3.4.4 大地的應用案例的數據構成 34
3.4.5 大地的應用案例的技術
方案設計與實現 34
3.4.6 大地的應用案例系統(tǒng)核心組件
(H3C數據集成組件)簡介 36
3.4.7 大地的應用案例的系統(tǒng)
優(yōu)勢及成效 36
3.5 本章小結 36
第二部分 大數據平臺高可用(HA)集群部署
第4章 Hadoop集群基礎環(huán)境的配置 38
4.1 Hadoop集群概述 38
4.1.1 Hadoop集群的核心組件 38
4.1.2 Hadoop集群的網絡拓撲
結構 40
4.2 平臺系統(tǒng)的環(huán)境設置 41
4.2.1 Linux系統(tǒng)環(huán)境配置 41
4.2.2 創(chuàng)建hadoop用戶 43
4.3 Linux防火墻 43
4.3.1 Linux防火墻的種類與特點 44
4.3.2 Linux防火墻管理 45
4.4 SELinux 47
4.4.1 SELinux簡介 47
4.4.2 SELinux的功能 47
4.4.3 SELinux的配置 47
4.4.4 關閉集群中的SELinux 47
4.5 配置集群主機之間時鐘同步 48
4.5.1 直接同步 48
4.5.2 平滑同步 49
4.6 SSH無密碼登錄 50
4.6.1 生成SSH密鑰 50
4.6.2 交換SSH密鑰 51
4.6.3 驗證SSH無密碼登錄 52
4.7 Java環(huán)境變量配置 52
4.7.1 JDK功能簡介 52
4.7.2 下載JDK安裝包 53
4.7.3 JDK的安裝與環(huán)境變量配置 53
4.8 Hadoop的安裝與配置 54
4.8.1 獲取Hadoop安裝包 54
4.8.2 安裝Hadoop軟件 54
4.9 本章小結 55
第5章 Hadoop HA集群的配置 56
5.1 Hadoop HA集群的特點 56
5.2 Hadoop HA集群的實現原理 57
5.2.1 HDFS HA的實現原理 57
5.2.2 YARN HA的實現原理 58
5.3 ZooKeeper的特點 58
5.3.1 ZooKeeper的功能原理 58
5.3.2 ZooKeeper集群節(jié)點組成 59
5.3.3 ZooKeeper的同步機制 60
5.3.4 ZooKeeper的選舉機制 60
5.4 ZooKeeper HA集群 61
5.4.1 在master節(jié)點上安裝
部署ZooKeeper 61
5.4.2 在master節(jié)點上配置
ZooKeeper文件參數 61
5.4.3 分發(fā)ZooKeeper給slave1節(jié)點
和slave2節(jié)點 62
5.5 Hadoop HA集群的文件參數 64
5.5.1 在master節(jié)點上配置
Hadoop HA集群的文件參數 64
5.5.2 分發(fā)hadoop相關文件給
slave1節(jié)點和slave2節(jié)點 68
5.6 JournalNode服務 69
5.6.1 JournalNode服務的原理 69
5.6.2 啟動JournalNode服務 70
5.7 本章小結 70
第6章 Hadoop HA集群的啟動 71
6.1 HDFS的格式化 71
6.1.1 active NameNode的格式化
和啟動 71
6.1.2 standby NameNode的格式化
和啟動 72
6.1.3 格式化ZKFC 73
6.2 Hadoop HA集群的啟動流程 73
6.2.1 啟動HDFS 73
6.2.2 啟動YARN 74
6.2.3 啟動MapReduce的
歷史服務器 75
6.3 啟動后驗證 75
6.3.1 查看進程 75
6.3.2 查看端口 76
6.3.3 運行測試 77
6.4 Hadoop HA集群的主備切換 78
6.4.1 Hadoop HA集群的切換
機制 78
6.4.2 手動切換測試 79
6.4.3 自動切換測試 79
6.5 本章小結 81
第三部分 大數據組件的維護
第7章 HBase組件的維護 84
7.1 NoSQL與傳統(tǒng)RDBMS的
差異 84
7.1.1 傳統(tǒng)RDBMS及其
應用場景 84
7.1.2 NoSQL簡介 85
7.2 HBase組件的原理 86
7.2.1 HBase簡介 86
7.2.2 HBase的體系結構 86
7.3 HBase的分布式部署 87
7.3.1 HBase集群環(huán)境準備 87
7.3.2 HBase的分布式安裝 88
7.4 HBase庫/表管理 90
7.4.1 HBase庫管理 90
7.4.2 HBase表管理 91
7.5 HBase數據操作 93
7.5.1 基礎操作 93
7.5.2 模糊查詢 94
7.5.3 批量導入/導出 95
7.6 HBase錯誤恢復 97
7.7 退出HBase庫 98
7.8 卸載HBase庫 98
7.9 本章小結 98
第8章 Hive組件的維護 99
8.1 Hive的架構 99
8.1.1 Hive簡介 99
8.1.2 Hive的數據類型 100
8.2 分布式部署Hive 101
8.2.1 環(huán)境需求 101
8.2.2 MySQL的安裝與啟動 102
8.2.3 配置Hive參數 103
8.2.4 Beeline CLI遠程訪問Hive 105
8.3 Hive庫操作 106
8.4 Hive表操作 107
8.4.1 創(chuàng)建表 107
8.4.2 查看與修改表 108
8.4.3 刪除表和退出Hive 108
8.5 Hive數據操作 109
8.5.1 數據導入 109
8.5.2 查詢 110
8.6 Hive宕機恢復 111
8.6.1 數據備份 111
8.6.2 基于HDFS的數據恢復 112
8.6.3 基于MySQL元數據
生成表結構 112
8.7 退出和卸載Hive組件 115
8.7.1 退出Hive 115
8.7.2 卸載Hive 115
8.8 本章小結 115
第9章 ZooKeeper組件的維護 116
9.1 ZooKeeper基礎 116
9.1.1 ZooKeeper簡介 116
9.1.2 ZooKeeper中的重要概念 117
9.2 ZooKeeper的功能及其優(yōu)點
和局限性 117
9.2.1 ZooKeeper的功能 117
9.2.2 ZooKeeper的優(yōu)點 118
9.2.3 ZooKeeper的局限性 118
9.3 ZooKeeper的架構 118
9.4 ZooKeeper仲裁模式 119
9.5 配置ZooKeeper 120
9.6 配置ZooKeeper集群 120
9.6.1 集群環(huán)境準備 120
9.6.2 ZooKeeper集群的安裝 121
9.7 Zookeeper集群的決策選舉 122
9.8 ZooKeeper組件管理 123
9.8.1 JMX管理框架 123
9.8.2 ZooKeeper Shell操作 125
9.9 本章小結 127
第10章 ETL組件的維護 128
10.1 Sqoop概述與架構 128
10.1.1 Sqoop概述 128
10.1.2 Sqoop的架構 129
10.2 Flume概述與架構 130
10.2.1 Flume概述 130
10.2.2 Flume的架構 130
10.3 Kafka概述與架構 131
10.3.1 Kafka概述 131
10.3.2 Kafka的架構 132
10.4 Sqoop導入數據 133
10.5 Sqoop導出數據 134
10.6 修改控制Sqoop組件的
參數 134
10.7 Flume組件代理配置 136
10.8 Flume組件的數據獲取 137
10.9 Flume組件管理 137
10.10 Kafka組件的部署 138
10.11 Kafka組件的驗證部署 139
10.12 Kafka組件的數據處理 140
10.13 本章小結 141
第11章 Spark組件的維護 142
11.1 Spark概述與架構 142
11.1.1 Spark概述 142
11.1.2 Spark的架構 144
11.2 Spark的工作原理 146
11.3 Scala的安裝部署 148
11.3.1 Scala簡介 148
11.3.2 Scala的安裝 148
11.4 安裝Spark 149
11.4.1 Spark模式介紹 149
11.4.2 Spark的安裝部署 151
11.5 修改Spark參數 154
11.5.1 Spark屬性 154
11.5.2 環(huán)境變量 155
11.5.3 Spark日志 156
11.5.4 覆蓋配置目錄 156
11.6 Spark Shell編程 156
11.6.1 Spark Shell概述 156
11.6.2 Spark Shell操作 156
11.7 Spark的基本管理 158
11.8 本章小結 160
第四部分 大數據平臺優(yōu)化
第12章 Linux系統(tǒng)優(yōu)化 162
12.1 Linux系統(tǒng)優(yōu)化工具 162
12.1.1 free命令 162
12.1.2 top命令 163
12.2 優(yōu)化Linux系統(tǒng)的內存 164
12.2.1 將hadoop用戶添加到
sudo組中 164
12.2.2 避免使用Swap分區(qū) 164
12.2.3 臟頁配置優(yōu)化 165
12.3 優(yōu)化Linux系統(tǒng)網絡 167
12.3.1 關閉Linux防火墻 167
12.3.2 禁用IPv6 167
12.3.3 修改somaxconn參數 167
12.3.4 Socket讀/寫緩沖區(qū)的
調優(yōu) 168
12.3.5 iperf網絡測試工具 169
12.4 優(yōu)化Linux系統(tǒng)磁盤 169
12.4.1 I/O調度器的選擇 169
12.4.2 禁止記錄訪問時間戳 171
12.5 優(yōu)化Linux文件系統(tǒng) 172
12.5.1 增大可打開文件描述符的
數目 172
12.5.2 關閉THP 172
12.5.3 關閉SELinux 173
12.6 優(yōu)化Linux系統(tǒng)預讀緩沖區(qū) 173
12.7 本章小結 174
第13章 HDFS配置優(yōu)化 175
13.1 HDFS概述 175
13.1.1 HDFS寫數據流程 176
13.1.2 HDFS讀數據流程 176
13.2 存儲優(yōu)化 176
13.2.1 合理的副本系數 177
13.2.2 合理的數據塊大小 178
13.3 磁盤I/O優(yōu)化 179
13.3.1 多數據存儲目錄 179
13.3.2 開啟HDFS的短路本地
讀配置 183
13.4 節(jié)點通信優(yōu)化 183
13.4.1 延遲blockreport次數 183
13.4.2 增大DataNode文件并發(fā)
傳輸的大小 184
13.4.3 增大NameNode工作線
程池的大小 184
13.4.4 增加DataNode連接
NameNode的RPC請求的
線程數量 185
13.4.5 調整DataNode用于平衡
操作的帶寬 185
13.5 其他常見的優(yōu)化項 186
13.5.1 避免讀取“過時”的
DataNode 186
13.5.2 避免寫入失效的
DataNode 186
13.5.3 為MapReduce任務保留
一些硬盤資源 187
13.6 本章小結 187
第14章 MapReduce配置優(yōu)化 188
14.1 MapReduce概述 188
14.2 Map階段的優(yōu)化 190
14.2.1 降低溢出(spill)的次數 190
14.2.2 在Map Task結束前對spill
文件進行合并 191
14.2.3 減少合并寫入磁盤文件的
數據量 192
14.2.4 控制Map中間結果是否
使用壓縮 192
14.2.5 選擇Map中間結果的
壓縮算法 193
14.3 Reduce階段的優(yōu)化 193
14.3.1 Reduce Task的數量 193
14.3.2 Reduce I/O的相關參數 195
14.3.3 Reduce Shuffle階段并行
傳輸數據的數量 196
14.3.4 tasktracker并發(fā)執(zhí)行的
Reduce數 196
14.3.5 可并發(fā)處理來自tasktracker
的RPC請求數 197
14.4 本章小結 197
第15章 Spark配置優(yōu)化 198
15.1 優(yōu)化Spark Streaming配置 198
15.1.1 Spark Streaming簡介 198
15.1.2 Spark參數的配置方式 199
15.1.3 Spark常用的優(yōu)化參數 202
15.2 優(yōu)化Spark讀取Kafka 202
15.2.1 Spark參數設置 202
15.2.2 Kafka參數設置 203
15.3 優(yōu)化讀取Flume 205
15.3.1 Flume參數設置 205
15.3.2 接收端參數設置 206
15.3.3 Spark讀取Flume 206
15.4 優(yōu)化Spark寫入HDFS 208
15.4.1 Spark Shell讀取并
寫入HDFS 208
15.4.2 顯示調用Hadoop API
寫入HDFS 208
15.4.3 Spark Streaming實時
監(jiān)控HDFS 209
15.5 優(yōu)化Spark Scala代碼 210
15.5.1 Scala編程技巧 210
15.5.2 Scala數據優(yōu)化 211
15.6 本章小結 212
第五部分 大數據平臺的診斷與處理
第16章 Hadoop及生態(tài)圈組件負載均衡
的診斷與處理 214
16.1 HDFS磁盤負載不均衡問題
及解決方案 214
16.1.1 問題概述 214
16.1.2 磁盤負載不均衡的原因
與影響 215
16.1.3 HDFS磁盤負載不均衡
的解決方案 215
16.2 MapReduce負載不均衡
問題 215
16.2.1 問題概述 215
16.2.2 MapReduce的原理分析 216
16.2.3 MapReduce負載不均衡的
解決方案 216
16.3 Spark負載不均衡問題 216
16.3.1 問題概述 216
16.3.2 Spark負載不均衡的危害 217
16.3.3 Spark負載不均衡的原因 217
16.3.4 問題發(fā)現與定位 217
16.3.5 Spark負載不均衡的
解決方案 218
16.3.6 自定義Partitioner 219
16.3.7 Reduce端Join轉化為
Map端Join 219
16.4 HBase負載不均衡問題 220
16.4.1 問題概述 220
16.4.2 HBase負載不均衡的
原因及解決方案 220
16.4.3 性能指標 221
16.5 Hive數據不均衡問題 222
16.5.1 問題概述 222
16.5.2 Hive數據不均衡的
原因及解決方案 223
16.5.3 Hive的典型業(yè)務場景 223
16.6 本章小結 224
第17章 集群節(jié)點故障的診斷與處理 225
17.1 使用集群日志對節(jié)點
故障進行診斷 225
17.1.1 Hadoop集群中的
日志文件 226
17.1.2 日志主要結構解析 226
17.1.3 日志級別分析 227
17.2 使用集群告警信息診斷節(jié)點
故障 227
17.2.1 集群告警信息監(jiān)控 227
17.2.2 集群節(jié)點主機告警信息 228
17.3 Ganglia大數據集群
節(jié)點監(jiān)控 229
17.4 處理集群節(jié)點故障 230
17.4.1 集群節(jié)點硬件異常 230
17.4.2 集群節(jié)點組件及系統(tǒng)異常 231
17.5 本章小結 231
第18章 集群組件服務故障的診斷
與處理 232
18.1 使用集群日志診斷組件
服務故障問題 232
18.1.1 大數據集群常見
故障問題 232
18.1.2 集群中各組件日志解析 232
18.2 使用集群告警信息診斷組件
服務故障問題 234
18.3 制訂集群告警信息診斷組件
服務故障問題的解決方案 236
18.3.1 Nagios簡介 236
18.3.2 Nagios的工作原理 236
18.3.3 Nagios的功能與用途 236
18.3.4 Nagios的監(jiān)測模式 237
18.4 處理集群告警信息診斷組件
服務故障問題 238
18.4.1 Hadoop常見故障問題分析 238
18.4.2 Nagios配置監(jiān)控
Hadoop日志 239
18.5 本章小結 240
第六部分 大數據平臺項目綜合案例
第19章 數據倉庫運維項目實戰(zhàn) 242
19.1 項目背景和流程 242
19.1.1 項目背景 242
19.1.2 項目流程 243
19.2 數據的說明、導入及清洗
和預處理 244
19.2.1 數據說明 244
19.2.2 數據導入 245
19.2.3 清洗和預處理 246
19.3 Hive建倉 248
19.3.1 數據倉庫的分層設計 248
19.3.2 Hive數據入倉 249
19.3.3 業(yè)務調用 252
19.4 本章小結 253
第20章 金融行業(yè)運維項目實戰(zhàn) 254
20.1 項目背景和流程 254
20.1.1 項目背景 254
20.1.2 項目流程 255
20.2 數據說明及清洗 255
20.2.1 數據說明 255
20.2.2 數據清洗 256
20.3 數據分析 258
20.3.1 借款金額分布 258
20.3.2 借款等級分布 258
20.3.3 借款等級與借款金額的
關聯關系 259
20.3.4 借款金額與工作年限、
年收入的關聯關系 259
20.3.5 借款金額與房屋所有權
狀態(tài)的關聯關系 260
20.4 數據可視化 260
20.5 綜合分析 264
20.6 本章小結 264
第21章 典型大數據平臺監(jiān)控運維
項目實戰(zhàn) 265
21.1 實驗背景和流程 265
21.1.1 實驗背景 265
21.1.2 實驗流程 266
21.2 數據說明及預處理 267
21.2.1 數據說明 267
21.2.2 數據預處理 267
21.3 安裝Ganglia 269
21.3.1 安裝Ganglia所需的依賴 269
21.3.2 監(jiān)控端安裝Gmeta、
Gmond、Gweb、
Nginx、Php 270
21.3.3 被監(jiān)控端安裝Gmond 274
21.4 開啟Ganglia 274
21.4.1 修改Ganglia-monitor的
配置文件 274
21.4.2 主節(jié)點配置 275
21.4.3 修改Hadoop的配置文件 275
21.4.4 重啟所有服務 276
21.4.5 訪問頁面查看各機器的
節(jié)點信息 276
21.5 進行上傳操作 277
21.6 進行查詢操作 278
21.7 Ganglia監(jiān)控結果 279
21.7.1 基本指標 279
21.7.2 上傳操作前后集群狀態(tài)的
變化 279
21.7.3 查詢操作前后集群狀態(tài)的
變化 280
21.8 本章小結 281