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