Hadoop專家:管理、調優與SparkYARNHDFS安全

Hadoop專家:管理、調優與SparkYARNHDFS安全

《Hadoop專家:管理、調優與SparkYARNHDFS安全》的作者Sam Alapati已經與Hadoop集群生產部門合作了六年。他獨特的經驗使他能夠為所有希望對任何大小的Hadoop集群進行規範、擴展和安全生產的管理員編寫首選資源。

基本介紹

  • 書名:Hadoop專家:管理、調優與SparkYARNHDFS安全
  • 作者:【美】Sam R. Alapati(山姆·阿拉帕蒂)
  • 譯者:趙國賢 等
  • ISBN:978-7-121-35669-8
  • 頁數:760
  • 定價:168
  • 出版社:電子工業出版社
  • 出版時間:2019-03
  • 裝幀:平裝
  • 開本:16
內容提要,目錄,作者簡介,

內容提要

《Hadoop專家:管理、調優與SparkYARNHDFS安全》翻譯自 Sam R. Alapati 的 Expert Hadoop Administration。Sam R. Alapati 是 Sabre 公司的首席 Hadoop 管理員,具有多年的 Hadoop 運維管理經驗。他希望通過本書,為 Hadoop 集群開發與管理人員提供一些有益指導。
本書首先介紹了 Hadoop 的整體架構及其部署與使用;然後著重介紹了兩個重要的計算引擎MapReduce 與 Spark;接著介紹了 Hadoop 的數據存儲與安全、數據均衡等特性;最後則介紹了如何進行參數調優與故障排除。整個流程下來,讀者能夠建立起完整的關於 Hadoop 管理的體系架構。
《Hadoop專家:管理、調優與SparkYARNHDFS安全》為 Hadoop 管理員而編寫,同時也適合Hadoop 開發人員使用。

目錄

第Ⅰ部分 Hadoop架構與Hadoop集群介紹
第1章 Hadoop與Hadoop環境介紹 3
Hadoop簡介 4
Hadoop 的特性 5
Hadoop 與大數據 5
Hadoop 的典型套用場景 6
傳統資料庫系統 7
數據湖 9
大數據、數據科學和Hadoop 10
Hadoop集群與集群計算 11
集群計算 11
Hadoop 集群 12
Hadoop組件和Hadoop生態 14
Hadoop管理員需要做些什麼 16
Hadoop 管理—新的範式 17
關於Hadoop 管理你需要知道的 18
Hadoop 管理員的工具集 19
Hadoop 1和Hadoop 2的關鍵區別 19
架構區別 20
高可用性 20
多計算引擎 21
分離處理和調度 21
Hadoop 1 和Hadoop 2 中的資源分配 22
分散式數據處理:MapReduce和Spark、Hive、Pig 22
MapReduce 22
Apache Spark 23
Apache Hive 24
Apache Pig 24
數據整合:Apache Sqoop、Apache Flume和Apache Kafka 25
Hadoop管理中的關鍵領域 26
集群存儲管理 26
集群資源分配 26
作業調度 27
Hadoop 數據安全 27
總結 28
第2章 Hadoop架構介紹 31
Hadoop與分散式計算 31
Hadoop 架構 32
Hadoop 集群 33
主節點和工作節點 33
Hadoop 服務 34
數據存儲—Hadoop分散式檔案系統 35
HDFS 特性 35
HDFS 架構 36
HDFS 檔案系統 38
NameNode 操作 41
利用YARN(Hadoop作業系統)進行數據處理 45
YARN 的架構 46
ApplicationMaster 如何與ResourceManager 協作進行資源分配 51
總結 54
第3章 創建和配置一個簡單的Hadoop集群 55
Hadoop發行版本和安裝類型 56
Hadoop 發行版本 56
Hadoop 安裝類型 57
設定一個偽分散式Hadoop集群 58
滿足作業系統的要求 58
修改核心參數 59
設定SSH 64
Java 需求 65
安裝Hadoop 66
創建必要的Hadoop 用戶 66
創建必要的目錄 67
Hadoop初始配置 67
環境變數配置檔案 69
唯讀默認配置檔案 70
site 專用配置檔案 70
其他Hadoop 相關的配置檔案 71
配置檔案的優先權 72
可變擴展和配置參數 74
配置Hadoop 守護進程環境變數 74
配置Hadoop 的核心屬性(使用core-site.xml 檔案) 76
配置MapReduce(使用mapred-site.xml 檔案) 78
配置YARN(使用yarn-site.xml 檔案) 79
配置HDFS(使用hdfs-site.xml 檔案) 80
操作新的Hadoop集群 82
格式化分散式檔案系統 82
設定環境變數 82
啟動HDFS 和YARN 服務 83
驗證服務啟動 85
關閉服務 85
總結 86
第4章 規劃和創建一個完全分散式集群 87
規劃Hadoop集群 88
集群規劃注意事項 88
安排伺服器 90
節點選擇的標準 90
從單機架到多機架 91
調整Hadoop 集群 91
CPU、記憶體和存儲選擇的一般性原則 92
主節點的特殊要求 95
關於伺服器大小的幾點建議 96
集群增長 97
大型集群指南 97
創建一個多節點集群 98
如何設定測試集群 98
修改Hadoop的配置 102
更改HDFS 的配置(hdfs-site.xml 檔案) 102
更改YARN 的配置 105
修改MapReduce 的配置 109
啟動集群 110
使用腳本啟動和關閉集群 112
快速檢查新集群的檔案系統 113
配置Hadoop服務、Web界面和連線埠 114
服務配置和Web 界面 115
設定Hadoop 服務的連線埠 117
Hadoop 客戶端 120
總結 122
第Ⅱ部分 Hadoop套用架構
第5章 在集群上運行一個套用—MapReduce框架和Hive、Pig 125
MapReduce框架 125
MapReduce 模型 126
MapReduce 怎樣工作 127
MapReduce 作業處理 129
一個簡單的MapReduce 程式 130
通過運行WordCount 程式理解Hadoop 作業的處理過程 132
MapReduce 輸入/ 輸出目錄 133
Hadoop 如何展示作業細節 133
Hadoop Streaming 135
Apache Hive 137
Hive 數據組織 138
使用Hive 表 138
將數據導入Hive 138
使用Hive 查詢 139
Apache Pig 139
Pig 執行模型 140
一個簡單的Pig 示例 140
總結 141
第6章 集群上的套用—Spark框架介紹 143
Spark是什麼 144
為什麼使用Spark 145
速度 145
易用性 147
通用框架 148
Spark 和Hadoop 148
Spark技術棧 149
安裝Spark 151
Spark 示例 152
Spark 的主要檔案和目錄 153
編譯Spark 二進制檔案 153
減少Spark 日誌 153
Spark運行模式 154
本地模式 154
集群模式 154
集群管理器 154
獨立集群管理器 155
基於Apache Mesos 的Spark 157
基於YARN 的Spark 158
YARN 和Spark 如何協同合作 159
設定基於Hadoop 集群的Spark 159
Spark和數據獲取 159
從Linux 檔案系統載入數據 160
從HDFS 載入數據 160
從關係型資料庫獲取數據 161
總結 162
第7章 運行Spark應用程式 163
Spark編程模型 163
Spark 編程和RDD 164
Spark 編程 166
Spark應用程式 167
RDD 基礎 168
創建RDD 168
RDD 操作 171
RDD 持久化 173
Spark套用的結構 174
Spark 術語 174
Spark 應用程式的組件 174
互動式運行Spark應用程式 175
Spark shell 和Spark 應用程式 176
Spark shell 176
使用Spark shell 176
Spark 集群執行概述 179
創建和提交Spark套用 180
構建Spark 套用 180
在獨立的Spark 集群上運行套用 180
使用spark-submit 執行套用 181
在Mesos 上運行Spark 套用 183
在Hadoop YARN 集群上運行Spark 套用 183
使用JDBC/ODBC 服務 186
配置Spark套用 187
Spark 的配置屬性 187
運行spark-submit 時的配置 187
監控Spark套用 188
使用Spark Streaming處理流式計算 189
Spark Streaming 如何工作 189
Spark Streaming 示例,又是WordCount 191
使用Spark SQL 處理結構化數據 192
數據框架 192
HiveContext 和SQLContext 193
使用Spark SQL 193
創建DataFrames 195
總結 195
第Ⅲ部分 管理和保護Hadoop數據和高可用性
第8章 NameNode的作用和HDFS的工作原理 199
HDFS—NameNode與DataNode之間的互動 200
客戶端和HDFS 之間的互動 200
NameNode 與DataNode 之間的通信 201
機架感知與拓撲邏輯 203
如何在集群中配置機架感知策略 204
找出集群的機架信息 204
HDFS 數據副本 206
HDFS 數據組織和數據塊 207
數據複製 207
檔案塊和副本狀態 209
客戶端如何讀寫HDFS數據 213
客戶端如何讀取HDFS 數據 213
客戶端如何向HDFS 寫數據 214
了解HDFS恢復過程 217
生成戳 218
租約恢復 218
塊恢復 219
管道恢復 219
HDFS中的集中式快取管理 220
Hadoop 和OS 的頁面快取 221
集中式快取管理的關鍵原則 221
集中式快取管理如何工作 221
配置快取 222
快取指令 223
快取池 223
使用快取 223
Hadoop歸檔存儲、SSD和記憶體(異構存儲) 225
不同存儲類型的性能特點 225
對異構HDFS 存儲的需求 226
存儲體系結構的變化 227
檔案的存儲首選項 228
設定歸檔存儲 228
管理存儲策略 232
移動數據 232
實現歸檔 233
總結 234
第9章 HDFS命令、HDFS許可權和HDFS存儲 235
使用HDFS Shell命令管理HDFS 235
使用hdfs dfs 實用程式來管理HDFS 237
列出HDFS 檔案和目錄 239
創建HDFS 目錄 241
刪除HDFS 檔案和目錄 242
更改檔案和目錄所有權和組 242
使用dfsadmin實用程式執行HDFS操作 243
dfsadmin -report 命令 245
管理HDFS許可權和用戶 247
HDFS 檔案許可權 247
HDFS 用戶和超級用戶 249
管理HDFS存儲 252
檢查HDFS 磁碟使用情況 252
分配HDFS 空間配額 255
重新均衡HDFS數據 259
HDFS 數據不均衡的原因 260
運行均衡器以均衡HDFS 數據 260
使用hdfs dfsadmin 使事情更簡單 263
何時運行均衡器 265
回收HDFS空間 266
刪除檔案和目錄 266
降低複製因子 266
總結 268
第10章 數據保護、檔案格式和訪問HDFS 269
保護數據 270
使用HDFS 資源回收筒防止意外數據刪除 270
使用HDFS 快照保護重要數據 272
通過檔案系統檢查確保數據完整性 276
數據壓縮 281
常用壓縮格式 282
評估各種壓縮方案 282
MapReduce 的各個階段的壓縮 283
Spark 的壓縮 286
數據序列化 286
Hadoop檔案格式 287
確定正確檔案格式的標準 288
Hadoop 支持的檔案格式 289
理想檔案格式 294
Hadoop 小檔案問題和合併檔案 294
使用NameNode 聯合架構克服小檔案問題 295
使用Hadoop Archives 管理小檔案 295
減小小檔案的性能影響 298
使用Hadoop WebHDFS和HttpFS 299
WebHDFS—Hadoop REST API 299
使用WebHDFS API 300
了解WebHDFS 命令 301
使用HttpFS 網關從防火牆後面訪問HDFS 304
總結 306
第11章 NameNode操作、高可用性和聯合 307
了解NameNode操作 308
HDFS 元數據 309
NameNode 啟動過程 311
NameNode 和DataNode 如何協同工作 311
檢查點操作 313
Secondary NameNode、檢查點節點、備份節點和Standby NameNode 314
配置檢查點操作頻率 315
管理檢查點性能 316
檢查點的機制 317
NameNode安全模式操作 319
自動安全模式操作 319
將NameNode 置於安全模式 320
NameNode 如何進行模式轉換 321
備份和恢復NameNode 元數據 322
配置HDFS高可用性 324
NameNode HA 架構(QJM) 325
設定HDFS HA Quorum 集群 327
部署高可用性NameNode 331
管理HA NameNode 設定 335
HA 手動和自動故障轉移 336
HDFS聯合 338
聯合NameNode 的體系結構 339
總結 340
第Ⅳ部分 數據遷移、資源分配、作業調度及安全
第12章 將數據導入和導出Hadoop 343
Hadoop數據傳輸工具簡介 343
通過命令行將數據載入到HDFS 344
使用-cat 命令轉儲檔案的內容 344
檢測HDFS 檔案 345
從HDFS 或向HDFS 複製或移動檔案 346
使用-get 命令移動檔案 347
向HDFS 或從HDFS 移動檔案 348
使用-tail 和head 命令 348
使用DistCp在HDFS集群之間複製數據 349
如何使用DistCp 命令移動數據 349
DistCp 選項 351
使用Sqoop從關係型資料庫獲取數據 353
Sqoop 架構 354
部署Sqoop 355
使用Sqoop 移動數據 356
使用Sqoop 導入數據 356
將數據導入Hive 367
使用Sqoop 導出數據 369
通過Flume從外部來源採集數據 376
Flume 架構簡介 376
配置Flume agent 378
簡單的Flume 示例 379
使用Flume 將數據移動到HDFS 381
更複雜的Flume 示例 383
與Kafka互動數據 385
Kafka 的優點 386
Kafka 是如何工作的 386
設定Apache Kafka 集群 388
將Kafka 與Hadoop 和Storm 集成 392
總結 393
第13章 Hadoop集群中的資源分配 395
Hadoop中的資源分配 395
管理集群的工作負載 396
Hadoop 的資源調度器 397
FIFO調度器 398
容量調度器 399
佇列和子佇列 400
集群如何分配資源 405
搶占申請 408
啟用容量調度器 409
一個典型的容量調度器 409
公平調度器 413
佇列 414
配置公平調度器 415
作業是如何被放置到佇列中的 417
公平調度器中的套用搶占 418
安全和資源池 419
一個fair-scheduler.xml 示例檔案 419
將作業提交到調度器 421
在佇列之間移動應用程式 421
監控公平調度器 422
容量調度器和公平調度器的對比 422
兩個調度器之間的相似之處 422
兩個調度器之間的差異 422
總結 423
第14章 使用Oozie管理作業工作流 425
使用Apache Oozie調度作業 425
Oozie架構 427
Oozie 伺服器 427
Oozie 客戶端 428
Oozie 資料庫 428
在集群中部署Oozie 429
安裝和配置Oozie 430
為Oozie 配置Hadoop 432
了解Oozie工作流 434
工作流、控制流和節點 434
使用workflow.xml 檔案定義工作流 435
Oozie如何運行一個動作 436
配置動作節點 437
創建Oozie工作流 442
配置控制節點 443
配置作業 448
運行Oozie工作流作業 449
指定作業屬性 449
部署Oozie 作業 451
創建動態工作流 451
Oozie 協調器 452
基於時間的協調器 453
基於數據的協調器 455
基於時間和數據的協調器 456
從命令行提交Oozie 協調器 457
管理和治理Oozie 458
常見的Oozie 命令 458
Oozie 故障排除 460
Oozie cron 調度和Oozie SLA 461
總結 462
第15章 Hadoop安全 463
Hadoop安全概覽 464
認證、授權和審計 466
使用Kerberos進行Hadoop認證 467
Kerberos 及其工作原理 467
Kerberos 認證過程 469
Kerberos 互信 470
一個特殊主體 471
將Kerberos 添加到集群中 471
Hadoop 相關的Kerberos 設定 476
使用Kerberos 保護Hadoop 集群 480
Kerberos 如何驗證用戶和服務 486
管理Kerberized Hadoop 集群 487
Hadoop授權 490
HDFS 許可權 491
服務級授權 495
基於角色的Apache Sentry 許可權設定 497
Hadoop審計 503
審計HDFS 操作 504
審計YARN 操作 504
Hadoop數據安全 505
HDFS 透明加密 505
加密轉換中的數據 508
其他Hadoop安全舉措 509
使用Apache Knox 網關保護Hadoop 基礎設施 509
Apache Ranger 安全管理 509
總結 510
第Ⅴ部分 監控、最佳化和故障排除
第16章 管理作業、使用Hue和執行常規任務 513
使用YARN命令管理Hadoop作業 514
查看YARN 應用程式 515
檢查應用程式的狀態 516
Kill 正在執行的作業 516
檢查節點狀態 517
檢查YARN 的佇列狀態 517
獲取作業的日誌 517
YARN 管理命令 518
下線和上線節點 519
包含和剔除主機 520
下線DataNodes 和NodeManagers 521
重新上線節點 522
關於下線和重新上線的注意事項 523
添加新的DataNode 和NodeManager 524
高可用性ResourceManager 524
高可用性ResourceManager 架構 525
設定高可用性ResourceManager 525
ResourceManager 故障轉移 526
使用ResourceManager 高可用性命令 528
執行常規管理任務 529
將NameNode 移動到不同的主機 529
管理高可用性NameNode 529
使用關閉/ 啟動腳本來管理集群 530
均衡HDFS 530
均衡DataNodes 上存儲 531
管理MySQL資料庫 532
配置MySQL 資料庫 532
配置高可用性MySQL 533
備份重要集群數據 535
備份HDFS 元數據 535
備份Metastore 資料庫 537
使用Hue管理集群 537
允許用戶使用Hue 538
安裝Hue 538
配置集群以使用Hue 540
管理Hue 544
使用Hue 544
使用HDFS的附加功能 545
在多宿主網路中部署HDFS 和YARN 545
短路本地讀取 546
可掛載的HDFS 548
使用NFS 網關將HDFS 掛載到本地檔案系統 549
總結 551
第17章 監控、指標和Hadoop日誌 553
監控Linux伺服器 554
Linux 系統監控基礎 554
Linux 系統監控工具 556
Hadoop指標 559
Hadoop 指標類型 560
使用Hadoop 指標 561
收集檔案系統的指標 561
使用Ganglia進行監測 563
Ganglia 架構 563
Ganglia 和Hadoop 整合 564
設定Hadoop 指標 565
Hadoop日誌記錄 566
Hadoop 日誌訊息 566
守護進程和應用程式日誌以及如何查看這些日誌 568
應用程式日誌記錄的工作原理 568
Hadoop 如何使用HDFS 目錄和本地目錄 570
NodeManager 如何使用本地目錄 571
通過日誌聚合將作業日誌存儲在HDFS 中 576
使用Hadoop 守護程式日誌 580
使用Hadoop的Web UI進行監控 582
使用ResourceManager Web UI 監控作業 583
JobHistoryServer Web UI 589
使用NameNode Web UI 進行監控 591
監控其他Hadoop組件 592
監控Hive 592
監控Spark 593
總結 593
第18章 調優集群資源,最佳化MapReduce作業和基準測試 595
如何分配YARN記憶體和CPU 596
分配記憶體 596
配置CPU 核心數量 604
記憶體與CPU 之間的關係 605
配置高性能 605
推測執行 605
減少系統上的I/O 負載 608
調整map和reduce任務,管理員可以做什麼 608
map 任務調優 609
輸入和輸出 610
reduce 任務調優 613
MapReduce shuffle 進程調優 615
最佳化Pig和Hive作業 617
最佳化Hive 作業 618
最佳化pig 作業 619
對集群進行基準測試 621
使用TestDFSIO 測試I / O 性能 621
使用TeraSort 進行基準測試 623
使用Hadoop 的Rumen 和GridMix 進行基準測試 625
Hadoop計數器 629
檔案系統計數器 629
作業計數器 631
MapReduce 框架計數器 632
自定義Java 計數器 633
限制計數器數量 633
最佳化MapReduce 633
map-only 與map 及reduce 作業 634
使用combiners 提升MapReduce 性能 634
使用partitioner 提高性能 635
在MapReduce 過程中壓縮數據 636
太多的map 和reduce 任務 637
總結 639
第19章 在YARN上配置和調優Apache Spark 641
在YARN上配置Spark的資源分配 642
分配CPU 642
分配記憶體 642
如何把資源分配給Spark 642
Spark 應用程式的資源分配限制 643
將資源分配給驅動程式 645
為執行器配置資源 648
Spark 如何使用記憶體 652
要注意的事情 654
集群或客戶端模式 656
配置Spark 相關網路參數 657
YARN Spark動態資源分配 658
動態和靜態資源分配 658
如何管理動態資源分配 658
啟用動態資源分配 659
存儲格式和壓縮數據 660
存儲格式 660
檔案大小 662
壓縮 662
監控Spark應用程式 663
使用Spark Web UI 了解性能 663
Spark 系統和Metrics REST API 666
YARN 上的Spark 歷史記錄伺服器 666
從命令行跟蹤作業 668
調優垃圾回收 668
垃圾回收機制 668
如何收集GC 統計數據 669
調優Spark Streaming應用程式 670
減少批處理時間 670
設定正確的批次間隔 670
調優記憶體和垃圾回收 671
總結 671
第20章 最佳化Spark應用程式 673
重新審視Spark執行模型 674
Spark 執行模型 674
shuffle操作以及如何減少shuffle操作 676
WordCount 示例(再一次展示) 676
shuffle 操作的影響 678
配置shuffle 參數 679
分區和並行性(任務數) 684
並行度 685
極少數任務的問題 687
設定默認分區數 687
如何增加分區數量 688
使用Repartition(重新分區)和Coalesce(合併)
操作來更改RDD 中的分區數 689
兩種類型的分區器 690
數據分區和如何避免shuffle 690
數據的序列化和壓縮最佳化 691
數據序列化 691
配置壓縮 692
Spark的SQL查詢最佳化器 693
最佳化步驟 693
Spark 的推測執行功能 695
數據本地化的重要性 696
快取數據 698
快取容錯 699
如何指定快取 699
總結 704
第21章 Hadoop故障排除—樣例 705
空間相關問題 705
處理Linux 檔案系統100% 使用的情況 706
HDFS 空間問題 707
本地目錄以及日誌目錄空間超出 707
磁碟容錯 709
處理卡住的YARN作業 710
JVM記憶體分配與垃圾回收策略 712
理解JVM 垃圾回收 712
最佳化垃圾回收 713
Analyzing Memory Usage 713
記憶體不足問題 714
ApplicationMaster 記憶體問題 715
處理不同類型的錯誤 716
處理守護進程失敗的情況 716
啟動Hadoop 守護進程失敗 717
任務和作業失敗 718
Spark作業故障排除 719
Spark 的容錯機制 720
殺死Spark 作業 720
一個作業的最大嘗試次數 720
一個作業最大的失敗次數 720
調試Spark套用 720
通過日誌聚合訪問日誌 720
當日誌聚合未開啟時訪問日誌 721
重新審視啟動環境 721
總結 722
附錄A 安裝VirtualBox和Linux以及虛擬機的克隆 723

作者簡介

Sam R. Alapati 作為Sabre 企業數據分析(EDA)部門所有Hadoop管理相關工作的負責人,管理並最佳化了與Hadoop 相關的多個關鍵數據科學和數據分析工作的流程。Sam 還是一名Oracle 資料庫管理專家,具有豐富的關係型資料庫和SQL 的相關知識。Sam 多年來在配置、體系結構和管理Hadoop 性能方面的從業經歷使他認識到,許多Hadoop 管理員和開發人員都希望有一個方便的指南,比如本書,以便在創建、管理、保護和最佳化Hadoop 基礎架構時參考。

相關詞條

熱門詞條

聯絡我們