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