作業來源于: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的執行步驟:
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
2)編寫map函數和reduce函數,在本地運作測試通過
嘗試運作:
3)啟動Hadoop:HDFS, JobTracker, TaskTracker
4)把文本檔案上傳到hdfs檔案系統上 user/hadoop/input
5)streaming的jar檔案的路徑寫入環境變量,讓環境變量生效
6)建立一個shell腳本檔案:streaming接口運作的腳本,名稱為run.sh
7)source run.sh來執行mapreduce
8)檢視運作結果