分佈式並行計算MapReduce

該做業要求來源於:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319node

1、用本身的話闡明Hadoop平臺上HDFS和MapReduce的功能、工做原理和工做過程。

Hdfs的功能:高度容錯性、支持大規模數據集、支持流式讀取數據、簡單的一致性模型、移動計算而非移動數據、異構軟硬件平臺間的可移植性shell

MapReduce的功能:數據劃分和計算任務調度、數據/代碼互定位、系統優化、出錯檢測和恢復、HDFS工做原理及流程分佈式

 

hdfs的工做流程:函數

  1. hdfs集羣分爲兩大角色:NameNode,DataNode (Secondary NameNode)
  2. NameNode負責管理整個文件的元數據(命名空間信息,塊信息) 至關於Master
  3. DataNode負責管理用戶的文件數據塊 至關於Salve
  4. 文件會按照固定的大小(block=128M)切成若干塊後分布式存儲在若干個datanode節點上
  5. 每個文件塊有多個副本(默認是三個),存在不一樣的datanode上
  6. DataNode會按期向NameNode彙報自身所保存的文件block信息,而namenode則會負責保持文件副本數量
  7. hdfs的內部工做機制會對客戶的保持透明,客戶端請求方法hdfs都是經過向namenode申請來進行訪問
  8. SecondaryNameNode有兩個做用,一是鏡像備份,二是日誌與鏡像的按期合併

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輸出

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)查看運行結果

 

每位同窗準備不同的大一點英文文本文件,每一個步驟截圖交上博客上。

上述步驟測試經過以後,能夠嘗試對文本作處理以後再統計次數,如標點符號、停用詞等。

有能力的同窗嘗試對以前爬蟲爬取的文本,在Hadoop上作中文詞頻統計

相關文章
相關標籤/搜索