Hadoop實戰-初級部分 之 MapReduce

第一部分: 什麼是  MapReduce
              Hadoop Map/Reduce是一個使用簡易的軟件框架,基於它寫出來的應用程序可以運行在由上千個商用機器組成的大型集羣上,並以一種可靠容錯的方式並行處理上T級別的數據集。
              MapReduce基礎出發點是很易懂。它由稱爲map和reduce的兩部分用戶程序組成,而後利用框架在計算機集羣上面根據需求運行多個程序實例來處理各個子任務,而後再對結果進行歸併。
 
第二部分:  MapReduce 架構設計

MapReduce 執行流程
 
 
做業提交流程
 
 
術語:
•job:用戶的每個計算請求,就稱爲一個做業。
•JobTracker:用戶提交做業的服務器,同時,它還負責各個做業任務的分配,管理全部的任務服務器。
•TaskTracker:不辭辛苦的工蜂,負責執行具體的任務。
•Task:每個做業,都須要拆分開了,交由多個服務器來完成,拆分出來的執行單位,就稱爲任務。
第三部分:配置開發環境
•Tool,ToolRunner介紹
•配置文件管理
•Eclipse 開發環境搭建
 
•用Tool來實現打印全部配置的全部屬性
•介紹ToolRunner
•配置文件管理
–能夠在運行Job時用 –conf 參數來指定要使用的配置文件,這樣能夠合理管理測試,生產環境所需的配置文件
–示例
•Hadoop-local.xml
•hadoop-localhost.xml
–Hadoop fs –conf  文件名查看相應的配置
•Eclipse 開發環境搭建
–在Resources文件夾中加入mapred-site.xml 便可
–導入Hadoop lib 下全部的Jar包
第四部分:應用例子:詞頻統計
             若是想統計下過去 50 年畢業生畢業論文出現最多的幾個單詞,看看你們都在研 究些什麼,那收集好論文後,該怎麼辦呢?
方法一:我能夠寫一個小程序,把全部論文按順序遍歷一遍,統計每個遇到的單 詞的出現次數,最後就能夠知道哪幾個單詞最熱門了。
這種方法在數據集比較小時,是很是有效的,並且實現最簡單,用來解決這個問題 很合適。
方法二:寫一個多線程程序,併發遍歷論文。
方法二確定比方法一高效。可是寫一個多線程程序要比方法一困難多了,咱們必須 本身同步共享數據,好比要防止兩個線程重複統計文件。
方法三:把做業交給多個計算機去完成。
咱們可使用方法一的程序,部署到 N 臺機器上去,而後把論文集分紅 N 份,一臺 機器跑一個做業。這個方法跑得足夠快,可是部署起來很麻煩,咱們要人工把程序 copy 到別的機器,要人工把論文集分開,最痛苦的是還要把 N 個運行結果進行整合 (固然咱們也能夠再寫一個程序)。
方法四:讓 MapReduce 來幫幫咱們吧!
 
      MapReduce 本質上就是方法三,可是如何拆分文件集,如何 copy 程序,如何整 合結果這些都是框架定義好的。咱們只要定義好這個任務(用戶程序),其它都交 給 MapReduce 。
map 函數和 reduce 函數
  map 函數和 reduce 函數是交給用戶實現的,這兩個函數定義了任務自己。
map 函數:接受一個鍵值對( key-value pair ),產生一組中間鍵值對。MapReduce 框架會將 map 函數產生的中間鍵值對裏鍵相同的值傳遞給一個reduce 函數。
reduce 函數:接受一個鍵,以及相關的一組值,將這組值進行合併產生一組規模 更小的值(一般只有一個或零個值)。
 
私塾在線學習網原創內容,轉載請註明出處【 http://sishuok.com/forum/blogPost/list/0/5456.html
相關文章
相關標籤/搜索