分佈式並行計算MapReduce

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

1.HDFS: Hadoop Distributed File System Hadoop分佈式文件系統shell

1.1功能:編程

1.兼容廉價的硬件設備。2.流數據的讀寫。3.大數據集。4.簡單的文件模型。5.強大的誇平臺兼容性。網絡

1.2工做原理:客戶端要向HDFS寫數據,首先要跟namenode通訊以確承認以寫文件並得到接收文件block的datanode,而後客戶端按順序將文件逐個block傳遞給相應datanode,並由接收到block的datanode負責向其餘datanode複製block的副本。負載均衡

 

 

 

1.3工做過程:框架

l  hdfs集羣分爲兩大角色:NameNode,DataNode (Secondary NameNode)分佈式

l  NameNode負責管理整個文件的元數據(命名空間信息,塊信息) 至關於Master函數

l  DataNode負責管理用戶的文件數據塊 至關於Salveoop

l  文件會按照固定的大小(block=128M)切成若干塊後分布式存儲在若干個datanode節點上測試

l  每個文件塊有多個副本(默認是三個),存在不一樣的datanode上

l  DataNode會按期向NameNode彙報自身所保存的文件block信息,而namenode則會負責保持文件副本數量

l  hdfs的內部工做機制會對客戶的保持透明,客戶端請求方法hdfs都是經過向namenode申請來進行訪問

 

 

 

2.MapReduce

 

2.1功能:MapReduce是一種並行可擴展計算模型,而且有較好的容錯性,主要解決海量離線數據的批處理。實現下面目標

易於編程、良好的擴展性、高容錯性

 

2.2工做原理:MapReduce是一種可用於數據處理的編程框架。MapReduce採用"分而治之"的思想,把對大規模數據集的操做,分發給一個主節點管理下的各個分節點共同完成,而後經過整合各個節點的中間結果,獲得最終結果。簡單地說,MapReduce就是"任務的分解與結果的彙總"。

在分佈式計算中,MapReduce框架負責處理了並行編程中分佈式存儲、工做調度、負載均衡、容錯均衡、容錯處理以及網絡通訊等複雜問題,把處理過程高度抽象爲兩個函數:map和reduce,map負責把任務分解成多個任務,reduce負責把分解後多任務處理的結果彙總起來。

 

 

 

 

2.3工做過程

1,大數據經split劃分紅大小相等的數據塊(數據塊的大小通常等於HDFS一個塊的大小)以及用戶做業程序。

2,系統中有一個負責調度的Master節點和許多的Map工做節點,Reduce工做節點

3,用戶做業程序提交給Master節點,Master節點尋找合適的Map節點,並將數據傳給Map節點,而且Master也尋找合適的Reduce節點並將數據傳給Reduce節點

4,Master節點啓動Map節點執行程序,Map節點儘量的讀取本地或本機架上的數據塊進行計算。(數據本地化是Mapreduce的核心特徵)

5,每一個Map節點處理讀取的數據塊,並作一些數據整理,而且將中間結果放在本地而非HDFS中,同時通知Master節點Map工做完成,並告知中間結果的存儲位置。

6,Master節點等全部Map工做完成後,開始啓動Reduce節點,Reduce節點經過Master節點掌握的中間結果的存儲位置來遠程讀取中間結果。

7,Reduce節點將中間結果處理後將結果輸出到一個文件中。

從用戶做業程序角度來看:

一個做業執行過程當中有一個Jobtracker和多個Tasktracker,分別對應於HDFS中的namenode和datanode。Jobclient在用戶端把已配置參數打包成jar文件存儲在HDFS,並把存儲路徑提交給Jobtracker,而後Jobtracker建立每個Task,而且分發到Tasktracker服務中去執行。

 

 

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上作中文詞頻統計。

相關文章
相關標籤/搜索