天天看點

分布式并行計算MapReduce

作業來源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319

1.用自己的話闡明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作過程。

HDFS功能:

 1.中繼資料

Metadata,維護檔案和目錄資訊,分為記憶體中繼資料和中繼資料檔案

NameNode主要存儲中繼資料鏡像檔案Fsimage和日志檔案Edits

Fsimage記錄某一永久性檢查點時整個HDFS的元資訊

Edits所有對HDFS的寫操作都會記錄在此檔案

2.檢查點

定期對NameNode中的檔案進行備份,NameNode啟動時會将最新的Fsimage加載到記憶體中

由secondary namenode完成namenode備份,後者損壞後前者将fsimage拷貝到namenode工作目錄,恢複其中繼資料

觸發條件分為兩次檢查點間隔時間和兩次檢查點操作數兩種

3.DataNode功能

存儲管理使用者的檔案塊資料,預設128M/block

定期彙報塊資訊給namenode

Mapreduce功能:

1)資料劃分和計算任務排程,

2)資料/代碼互定位,

3)系統優化,

4)出錯檢測和恢複

HDFS工作原理及流程:

分布式并行計算MapReduce

Mapreduce工作原理及流程:

MapReduce的執行步驟:

1、Map任務處理

  1.1 讀取HDFS中的檔案。每一行解析成一個<k,v>。每一個鍵值對調用一次map函數。

  1.2 覆寫map(),接收1.1産生的<k,v>,進行處理,轉換為新的<k,v>輸出。

  1.3 對1.2輸出的<k,v>進行分區。預設分為一個區。

  1.4 對不同分區中的資料進行排序(按照k)、分組。分組指的是相同key的value放到一個集合中。

2、Reduce任務處理

  2.1 多個map任務的輸出,按照不同的分區,通過網絡copy到不同的reduce節點上。

  2.2 對多個map的輸出進行合并、排序。覆寫reduce函數,接收的是分組後的資料,實作自己的業務邏輯,處理後,産生新的<k,v>輸出。

  2.3 對reduce輸出的<k,v>寫到HDFS中。

2.HDFS上運作MapReduce

1)準備文本檔案,放在本地/home/hadoop/wc

分布式并行計算MapReduce

2)編寫map函數和reduce函數,在本地運作測試通過

分布式并行計算MapReduce
分布式并行計算MapReduce
分布式并行計算MapReduce
分布式并行計算MapReduce
分布式并行計算MapReduce

嘗試運作:

分布式并行計算MapReduce
分布式并行計算MapReduce

3)啟動Hadoop:HDFS, JobTracker, TaskTracker

分布式并行計算MapReduce

4)把文本檔案上傳到hdfs檔案系統上 user/hadoop/input 

分布式并行計算MapReduce

5)streaming的jar檔案的路徑寫入環境變量,讓環境變量生效

分布式并行計算MapReduce
分布式并行計算MapReduce

6)建立一個shell腳本檔案:streaming接口運作的腳本,名稱為run.sh

分布式并行計算MapReduce

7)source run.sh來執行mapreduce

分布式并行計算MapReduce

8)檢視運作結果

分布式并行計算MapReduce