該做業要求來源於:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319node
Hdfs的功能:高度容錯性、支持大規模數據集、支持流式讀取數據、簡單的一致性模型、移動計算而非移動數據、異構軟硬件平臺間的可移植性shell
MapReduce的功能:數據劃分和計算任務調度、數據/代碼互定位、系統優化、出錯檢測和恢復、HDFS工做原理及流程分佈式
hdfs的工做流程:函數
MapReduce的工做流程:oop
一、輸入文件分片,每一片都由一個MapTask來處理測試
二、Map輸出的中間結果會先放在內存緩衝區中,這個緩衝區的大小默認是100M,當緩衝區中的內容達到80%時(80M)會將緩衝區的內容寫到磁盤上。也就是說,一個map會輸出一個或者多個這樣的文件,若是一個map輸出的所有內容沒有超過限制,那麼最終也會發生這個寫磁盤的操做,只不過是寫幾回的問題。優化
三、從緩衝區寫到磁盤的時候,會進行分區並排序,分區指的是某個key應該進入到哪一個分區,同一分區中的key會進行排序,若是定義了Combiner的話,也會進行combine操做3d
四、若是一個map產生的中間結果存放到多個文件,那麼這些文件最終會合併成一個文件,這個合併過程不會改變分區數量,只會減小文件數量。例如,假設分了3個區,4個文件,那麼最終會合併成1個文件,3個區日誌
五、以上只是一個map的輸出,接下來進入reduce階段blog
六、每一個reducer對應一個ReduceTask,在真正開始reduce以前,先要從分區中抓取數據
七、相同的分區的數據會進入同一個reduce。這一步中會從全部map輸出中抓取某一分區的數據,在抓取的過程當中伴隨着排序、合併。
八、reduce輸出
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)查看運行結果
每位同窗準備不同的大一點英文文本文件,每一個步驟截圖交上博客上。
上述步驟測試經過以後,能夠嘗試對文本作處理以後再統計次數,如標點符號、停用詞等。
有能力的同窗嘗試對以前爬蟲爬取的文本,在Hadoop上作中文詞頻統計