Hadoop基礎教程


Hadoop基礎教程

本書內容

准備工作

目標讀者

約定

實踐環節:標題

讀者反饋

客戶支持

下載示例代碼

勘誤表

關於盜版

問題

1 緒論

1.1 大數據處理

1.1.1 數據的價值
1.1.2 受眾較少
1.1.3 一種不同的方法
1.1.4 Hadoop

1.2 基於Amazon Web Services的雲計算

1.2.1 雲太多了
1.2.2 第三種方法
1.2.3 不同類型的成本
1.2.4 AWS:Amazon的彈性架構
1.2.5 本書內容

1.3 小結

2 安裝並運行Hadoop

2.1 基於本地Ubuntu主機的Hadoop系統

其他操作系統

2.2 實踐環節:檢查是否已安裝JDK

2.2.1 安裝Hadoop

2.3 實踐環節:下載Hadoop

2.4 實踐環節:安裝SSH

2.4.1 配置並運行Hadoop

2.5 實踐環節:使用Hadoop計算圓周率

3種模式

2.6 實踐環節:配置偽分布式模式

配置根目錄並格式化文件系統

2.7 實踐環節:修改HDFS的根目錄

2.8 實踐環節:格式化NameNode

啟動並使用Hadoop

2.9 實踐環節:啟動Hadoop

2.10 實踐環節:使用HDFS

2.11 實踐環節:MapReduce的經典入門程序——字數統計

通過瀏覽器查看Hadoop活動

2.12 使用彈性MapReduce

創建Amazon Web Services賬號

2.13 實踐環節:使用管理控制台在EMR運行WordCount

2.13.1 使用EMR的其他方式
2.13.2 AWS生態系統

2.14 本地Hadoop與EMR Hadoop的對比

2.15 小結

3 理解MapReduce

3.1 鍵值對

3.1.1 具體含義
3.1.2 為什么采用鍵/值數據
3.1.3 MapReduce作為一系列鍵/值變換

3.2 MapReduce的Hadoop Java API

0.20 MapReduce Java API

3.3 編寫MapReduce程序

3.4 實踐環節:設置classpath

3.5 實踐環節:實現WordCount

3.6 實踐環節:構建JAR文件

3.7 實踐環節:在本地Hadoop集群運行WordCount

3.8 實踐環節:在EMR上運行WordCount

3.8.1 0.20之前版本的Java MapReduce API
3.8.2 Hadoop提供的mapper和reducer實現

3.9 實踐環節:WordCount的簡易方法

3.10 查看WordCount的運行全貌

3.10.1 啟動
3.10.2 將輸入分塊
3.10.3 任務分配
3.10.4 任務啟動
3.10.5 不斷監視JobTracker
3.10.6 mapper的輸入
3.10.7 mapper的執行
3.10.8 mapper的輸出和reducer的輸入
3.10.9 分塊
3.10.10 可選分塊函數
3.10.11 reducer類的輸入
3.10.12 reducer類的執行
3.10.13 reducer類的輸出
3.10.14 關機
3.10.15 這就是MapReduce的全部
3.10.16 也許缺了combiner

3.11 實踐環節:使用combiner編寫WordCount

3.12 實踐環節:更正使用combiner的WordCount

復用助您一臂之力

3.13 Hadoop專有數據類型

3.13.1 Writable和WritableComparable接口
3.13.2 wrapper類介紹

3.14 實踐環節:使用Writable包裝類

3.15 輸入/輸出

3.15.1 文件、split和記錄
3.15.2 InputFormat和RecordReader
3.15.3 Hadoop提供的InputFormat
3.15.4 Hadoop提供的RecordReader
3.15.5 OutputFormat和RecordWriter
3.15.6 Hadoop提供的OutputFormat
3.15.7 別忘了Sequence files

3.16 小結

4 開發MapReduce程序

4.1 使用非Java語言操作Hadoop

4.1.1 Hadoop Streaming工作原理
4.1.2 使用Hadoop Streaming的原因

4.2 實踐環節:使用Streaming實現WordCount

在作業中使用Streaming的區別

4.3 分析大數據集

4.3.1 獲取UFO目擊事件數據集
4.3.2 了解數據集

4.4 實踐環節:統計匯總UFO數據

4.5 實踐環節:統計形狀數據

4.6 實踐環節:找出目擊事件的持續時間與UFO形狀的關系

4.7 實踐環節:在命令行中執行形狀/時間分析

使用Java分析形狀和地點

4.8 實踐環節:使用ChainMapper進行字段驗證/分析

4.9 實踐環節:使用Distributed Cache改進地點輸出

4.10 計數器、狀態和其他輸出

4.11 實踐環節:創建計數器、任務狀態和寫入日志

信息太多

4.12 小結

5 高級MapReduce技術

5.1 初級、高級還是中級

5.2 多數據源聯結

5.2.1 不適合執行聯結操作的情況
5.2.2 map端聯結與reduce端聯結的對比
5.2.3 匹配賬戶與銷售信息

5.3 實踐環節:使用MultipleInputs實現reduce端聯結

5.3.1 實現map端聯結
5.3.2 是否進行聯結

5.4 圖算法

5.4.1 Graph 101
5.4.2 圖和MapReduce
5.4.3 圖的表示方法

5.5 實踐環節:圖的表示

算法綜述

5.6 實踐環節:創建源代碼

5.7 實踐環節:第一次運行作業

5.8 實踐環節:第二次運行作業

5.9 實踐環節:第三次運行作業

5.10 實踐環節:第四次也是最后一次運行作業

5.10.1 運行多個作業
5.10.2 關於圖的終極思考

5.11 使用語言無關的數據結構

5.11.1 候選技術
5.11.2 Avro簡介

5.12 實踐環節:獲取並安裝Avro

Avro及其模式

5.13 實踐環節:定義模式

5.14 實踐環節:使用Ruby創建Avro源數據

5.15 實踐環節:使用Java語言編程操作Avro數據

5.16 實踐環節:在MapReduce中統計UFO形狀

5.17 實踐環節:使用Ruby檢查輸出數據

5.18 實踐環節:使用Java檢查輸出數據

5.19 小結

6 故障處理

6.1 故障

6.1.1 擁抱故障
6.1.2 至少不怕出現故障
6.1.3 嚴禁模仿
6.1.4 故障類型
6.1.5 Hadoop節點故障

6.2 實踐環節:殺死DataNode進程

6.3 實踐環節:復制因子的作用

6.4 實踐環節:故意造成數據塊丟失

6.5 實踐環節:殺死TaskTracker進程

殺死集群主節點

6.6 實踐環節:殺死JobTracker

6.7 實踐環節:殺死NameNode進程

由軟件造成的任務失敗

6.8 實踐環節:引發任務故障

6.9 數據原因造成的任務故障

6.10 實踐環節:使用skip模式處理異常數據

6.11 小結

7 系統運行與維護

7.1 關於EMR的說明

7.2 Hadoop配置屬性

默認值

7.3 實踐環節:瀏覽默認屬性

7.3.1 附加的屬性元素
7.3.2 默認存儲位置
7.3.3 設置Hadoop屬性的幾種方式

7.4 集群設置

7.4.1 為集群配備多少台主機
7.4.2 特殊節點的需求
7.4.3 不同類型的存儲系統
7.4.4 Hadoop的網絡配置

7.5 實踐環節:查看默認的機櫃配置

7.6 實踐環節:報告每台主機所在機櫃

究竟什么是商用硬件

7.7 集群訪問控制

Hadoop安全模型

7.8 實踐環節:展示Hadoop的默認安全機制

通過物理訪問控制解決安全模型問題

7.9 管理NameNode

為fsimage配置多個存儲位置

7.10 實踐環節:為fsimage文件新增一個存儲路徑

遷移到另一台NameNode主機

7.11 實踐環節:遷移到新的NameNode主機

7.12 管理HDFS

7.12.1 數據寫入位置
7.12.2 使用平衡器

7.13 MapReduce管理

7.13.1 通過命令行管理作業
7.13.2 作業優先級和作業調度

7.14 實踐環節:修改作業優先級並結束作業運行

另一種調度器

7.15 擴展集群規模

7.15.1 提升本地Hadoop集群的計算能力
7.15.2 提升EMR作業流的計算能力

7.16 小結

8 Hive:數據的關系視圖

8.1 Hive概述

8.1.1 為什么使用Hive
8.1.2 感謝Facebook

8.2 設置Hive

8.2.1 准備工作
8.2.2 下載Hive

8.3 實踐環節:安裝Hive

8.4 使用Hive

8.5 實踐環節:創建UFO數據表

8.6 實踐環節:在表中插入數據

驗證數據

8.7 實踐環節:驗證表

8.8 實踐環節:用正確的列分隔符重定義表

Hive表是個邏輯概念

8.9 實踐環節:基於現有文件創建表

8.10 實踐環節:執行聯結操作

Hive和SQL視圖

8.11 實踐環節:使用視圖

原理分析
處理Hive中的畸形數據

8.12 實踐環節:導出查詢結果

表分區

8.13 實踐環節:制作UFO目擊事件分區表

8.13.1 分桶、歸並和排序
8.13.2 用戶自定義函數

8.14 實踐環節:新增用戶自定義函數

8.14.1 是否進行預處理
8.14.2 Hive和Pig的對比
8.14.3 未提到的內容

8.15 基於Amazon Web Services的Hive

8.16 實踐環節:在EMR上分析UFO數據

8.16.1 在開發過程中使用交互式作業流
8.16.2 與其他AWS產品的集成

8.17 小結

9 與關系數據庫協同工作

9.1 常見數據路徑

9.1.1 Hadoop用於存儲檔案
9.1.2 使用Hadoop進行數據預處理
9.1.3 使用Hadoop作為數據輸入工具
9.1.4 數據循環

9.2 配置MySQL

9.3 實踐環節:安裝並設置MySQL

小心翼翼的原因

9.4 實踐環節:配置MySQL允許遠程連接

禁止嘗試的一些操作

9.5 實踐環節:建立員工數據庫

留意數據文件的訪問權限

9.6 把數據導入Hadoop

9.6.1 使用MySQL工具手工導入
9.6.2 在mapper中訪問數據庫
9.6.3 更好的方法:使用Sqoop

9.7 實踐環節:下載並配置Sqoop

9.8 實踐環節:把MySQL的數據導入HDFS

使用Sqoop把數據導入Hive

9.9 實踐環節:把MySQL數據導出到Hive

9.10 實踐環節:有選擇性的導入數據

9.11 實踐環節:使用數據類型映射

9.12 實踐環節:通過原始查詢導入數據

9.13 從Hadoop導出數據

9.13.1 在reducer中把數據寫入關系數據庫
9.13.2 利用reducer輸出SQL數據文件
9.13.3 仍是最好的方法

9.14 實踐環節:把Hadoop數據導入MySQL

9.15 實踐環節:把Hive數據導入MySQL

9.16 實踐環節:改進mapper並重新運行數據導出命令

9.17 在AWS上使用Sqoop

使用RDS

9.18 小結

10 使用Flume收集數據

10.1 關於AWS的說明

10.2 無處不在的數據

10.2.1 數據類別
10.2.2 把網絡流量導入Hadoop

10.3 實踐環節:把網絡服務器數據導入Hadoop

10.3.1 把文件導入Hadoop
10.3.2 潛在的問題

10.4 Apache Flume簡介

關於版本的說明

10.5 實踐環節:安裝並配置Flume

使用Flume采集網絡數據

10.6 實踐環節:把網絡流量存入日志文件

10.7 實踐環節:把日志輸出到控制台

把網絡數據寫入日志文件

10.8 實踐環節:把命令的執行結果寫入平面文件

10.9 實踐環節:把遠程文件數據寫入本地平面文件

10.9.1 信源、信宿和信道
10.9.2 Flume配置文件
10.9.3 一切都以事件為核心

10.10 實踐環節:把網絡數據寫入HDFS

10.11 實踐環節:加入時間戳

使用Sqoop還是使用Flume

10.12 實踐環節:多層Flume網絡

10.13 實踐環節:把事件寫入多個信宿

10.13.1 選擇器的類型
10.13.2 信宿故障處理
10.13.3 使用簡單元件搭建復雜系統

10.14 更高的視角

10.14.1 數據的生命周期
10.14.2 集結數據
10.14.3 調度

10.15 小結

11 展望未來

11.1 全書回顧

11.2 即將到來的Hadoop變革

11.3 其他版本的Hadoop軟件包

為什么會有其他版本

11.4 其他Apache項目

11.4.1 HBase
11.4.2 Oozie
11.4.3 Whir
11.4.4 Mahout
11.4.5 MRUnit

11.5 其他程序設計模式

11.5.1 Pig
11.5.2 Cascading

11.6 AWS資源

11.6.1 在EMR上使用HBase
11.6.2 SimpleDB
11.6.3 DynamoDB

11.7 獲取信息的渠道

11.7.1 源代碼
11.7.2 郵件列表和論壇
11.7.3 LinkedIn群組
11.7.4 Hadoop用戶群
11.7.5 會議

11.8 小結

隨堂測驗答案

3 理解MapReduce

7 系統運行與維護

思維導圖

Hadoop基礎教程

防止博客圖床圖片失效,防止圖片源站外鏈:

http://www.processon.com/chart_image/5e5b3b21e4b0cc44b5b4acf4.png)

思維導圖在線編輯鏈接:

https://www.processon.com/view/5e5b3b21e4b0cc44b5b4acf1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM