1.用本身的話闡明Hadoop平臺上HDFS和MapReduce的功能、工做原理和工做過程。node
HDFS,MapReduce功能:
分佈式文件系統HDFS主要用於大規模數據的分佈式存儲,而MapReduce則構建在分佈式文件系統上,對於存儲在分佈式文件系統的數據進行分佈式計算。shell
HDFS的工做原理:
Hadoop項目的核心子項目,是分佈式計算中數據存儲管理的基礎,是基於流數據模式訪問和處理超大文件的需求而開發的,能夠運行於廉價的商用服務器上。它所具備的高容錯、高可靠性、高可擴展性、高得到性、高吞吐率等特徵爲海量數據提供了不怕故障的存儲,爲超大數據集(Large Data Set)的應用處理帶來了不少便利。Hadoop分佈式文件系統(HDFS)被設計成適合運行在通用硬件(commodity hardware)上的分佈式文件系統。HDFS體系結構中有兩類節點,一類是NameNode,又叫"元數據節點";另外一類是DataNode,又叫"數據節點"。這兩類節點分別承擔Master和Worker具體任務的執行節點。總的設計思想:分而治之——將大文件、大批量文件,分佈式存放在大量獨立的服務器上,以便於採起分而治之的方式對海量數據進行運算分析。編程
MapReduce的工做原理:
MapReduce採用"分而治之"的思想,把對大規模數據集的操做,分發給一個主節點管理下的各個分節點共同完成,而後經過整合各個節點的中間結果,獲得最終結果。服務器
HDFS的工做過程:
客戶端要向HDFS寫數據,首先要跟namenode通訊以確承認以寫文件並得到接收文件block的datanode,而後,客戶端按順序將文件逐個block傳遞給相應datanode,並由接收到block的datanode負責向其餘datanode複製block的副本。網絡
MapReduce的工做過程:
執行MapReduce任務的機器角色有兩個:一個是JobTracker;另外一個是TaskTracker,JobTracker是用於調度工做的,TaskTracker是用於執行工做的。一個Hadoop集羣中只有一臺JobTracker。在分佈式計算中,MapReduce框架負責處理了並行編程中分佈式存儲、工做調度、負載均衡、容錯均衡、容錯處理以及網絡通訊等複雜問題,把處理過程高度抽象爲兩個函數:map和reduce,map負責把任務分解成多個任務,reduce負責把分解後多任務處理的結果彙總起來。負載均衡
2.HDFS上運行MapReduce框架
1)準備文本文件,放在本地/home/hadoop/wc分佈式
2)編寫map函數和reduce函數,在本地運行測試經過函數
3)啓動Hadoop:HDFS, JobTracker, TaskTrackeroop
4)把文本文件上傳到hdfs文件系統上 user/hadoop/input
5)streaming的jar文件的路徑寫入環境變量,讓環境變量生效
6)創建一個shell腳本文件:streaming接口運行的腳本,名稱爲run.sh
7)source run.sh來執行mapreduce
8)查看運行結果