作業要求來自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319
1.用自己的話闡明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作過程。
HDFS(Hadoop Distributed File System,Hadoop分布式檔案系統),它是一個高度容錯性的系統,适合部署在廉價的機器上。HDFS能提供高吞吐量的資料通路,适合那些有着超大資料集(large data set)的應用程式。
易于擴充的分布式檔案系統
運作在大量普通廉價機器上,提供容錯機制
為大量使用者提供性能不錯的檔案存取服務

MapReduce是并行處理架構,實作任務分解和排程。
其實原理說通俗一點就是分而治之的思想,将一個大任務分解成多個小任務(map),小任務執行完了之後,合并計算結果(reduce)。
也就是說,JobTracker拿到job之後,會把job分成很多個maptask和reducetask,交給他們執行。 MapTask、ReduceTask函數的輸入、輸出都是<key,value>的形式。HDFS存儲的輸入資料經過解析後,以鍵值對的形式,輸入到MapReduce()函數中進行處理,輸出一系列鍵值對作為中間結果,在Reduce階段,對擁有同樣Key值的中間資料進行合并形成最後結果。
2.HDFS上運作MapReduce
1)檢視是否已經安裝python:
1)準備文本檔案,放在本地/home/hadoop/wc
2)編寫map函數和reduce函數,在本地運作測試通過
3)啟動Hadoop:HDFS, JobTracker, TaskTracker
4)把文本檔案上傳到hdfs檔案系統上 user/hadoop/input
5)streaming的jar檔案的路徑寫入環境變量,讓環境變量生效
6)source run.sh來執行mapreduce