資源描述:
《學(xué)習(xí)hadoop第一步初識hadoop》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、1初識Hadoop1.1MapReduce模型介紹11.2Hadoop介紹31.2.1Hadoop的核心MapReduce41.2.2Hadoop的分布式文件系統(tǒng)51.3安裝Hadoop51.3.1安裝的前提條件51.3.2安裝Hadoop111.3.3檢查你的環(huán)境111.4執(zhí)行和測試Hadoop樣例程序161.4.1執(zhí)行PI計算器161.4.2查看輸出:輸入分割,混淆,溢出和排序171.4.3測試Hadoop211.5解決問題221.6總結(jié)23單個低端硬件通常不能滿足應(yīng)用程序?qū)Y源的需求。許多企業(yè)發(fā)現(xiàn)安裝他們使用的業(yè)務(wù)軟件的計算機并不具有較好的性價比。對于他們來說,一個簡單的解決方案就是購買
2、具有更多內(nèi)存和CPU的高端硬件,這通常需要巨額資金。只要你能買到最高端的硬件,這個解決方案能夠達(dá)到理想的效果,但是通常來說,預(yù)算是最主要的問題。我們有另外一個可選方案,那就是構(gòu)建一個高性能的集群。一個集群能夠模擬成為一個單個計算機,然而,它需要專業(yè)的安裝和管理服務(wù)?,F(xiàn)今,存在著許多專有的高性能的并且造價昂貴的集群。幸運的是,一個更經(jīng)濟的解決方案是通過云計算來獲得必要的計算資源。這里是一個典型的應(yīng)用場景,你需要處理一大批數(shù)據(jù),這些數(shù)據(jù)分成若干個項,項與項之間不存在依賴關(guān)系,因此,你可以使用單指令多數(shù)據(jù)(SIMD)算法。Hadoop核心提供了云計算的開源框架和一個分布式文件系統(tǒng)。Hadoop是阿帕
3、奇軟件基金下的一個著名的項目。本文介紹了Hadoop核心,講述了如何安裝和運行Hadoop。1.1MapReduce模型介紹Hadoop完全支持MapReduce模型,MapReduce模型是谷歌公司為了在廉價的計算機集群上處理以P數(shù)量級計算的大數(shù)據(jù)集而提出的一個解決方案。這個解決方案把解決問題分成兩個不同的步驟:Map:初始化數(shù)據(jù)的讀入和轉(zhuǎn)換,在此期間,框架對互不依賴的輸入記錄進行并行處理。Reduce:處理數(shù)據(jù)的組合和抽樣,有關(guān)聯(lián)的數(shù)據(jù)必須通過一個模塊進行集中處理。Hadoop中MapReduce的核心概念是把輸入的數(shù)據(jù)分成不同的邏輯塊,Map任務(wù)首先并行的對每一塊進行單獨的處理。這些邏輯
4、塊的處理結(jié)果會被重新組合成不同的排序的集合,這些集合最后由Reduce任務(wù)進行處理。一個Map任務(wù)可以執(zhí)行在集群中的任何一個計算機節(jié)點上。多個Map任務(wù)可以并行的執(zhí)行在集群中的多個節(jié)點上。Map任務(wù)負(fù)責(zé)轉(zhuǎn)換輸入記錄成為名值對。所有Map任務(wù)的輸出會被重新組合成多個排序的集合,這里面的每一個排序的集合會被派發(fā)給一個單獨的Reduce任務(wù)。Reduce任務(wù)會對集合中排序的關(guān)鍵字和關(guān)聯(lián)在關(guān)鍵字的多個數(shù)據(jù)值進行處理。Reduce任務(wù)也是并行的運行在集群中的不同節(jié)點上的。應(yīng)用程序開發(fā)人員僅僅需要提供4項輸入信息給Hadoop框架:讀取和轉(zhuǎn)換輸入記錄到鍵值對的作業(yè)類,一個Map方法,一個Reduce方法和
5、一個轉(zhuǎn)換鍵值對到輸出記錄的Reduce任務(wù)類。我的第一個MapReduce應(yīng)用程序是一個專業(yè)的網(wǎng)絡(luò)爬蟲。這個爬蟲接受大量的網(wǎng)頁地址,然后讀取和處理網(wǎng)頁地址的內(nèi)容。因為這個應(yīng)用要處理大量的網(wǎng)頁地址,所以獲取他們的內(nèi)容是極其浪費時間和資源的。整個處理流程包含一下幾個步驟,1.輸入網(wǎng)頁地址和獲得網(wǎng)頁地址關(guān)聯(lián)的元數(shù)據(jù)。2.規(guī)格化網(wǎng)頁地址。3.排除重復(fù)的網(wǎng)頁地址。4.通過預(yù)定義的排除和包含過濾器過濾網(wǎng)頁地址。5.通過預(yù)定義的非取內(nèi)容列表過濾網(wǎng)頁地址。6.通過預(yù)定義最近已看列表過濾網(wǎng)頁地址。7.獲取網(wǎng)頁地址內(nèi)容。8.標(biāo)志網(wǎng)頁地址內(nèi)容。9.更新最近已看列表。10.為下一個應(yīng)用程序準(zhǔn)備工作列表。在這個項目中,
6、我有20個機器可以使用。這個應(yīng)用程序原來的實現(xiàn)是非常復(fù)雜的,它使用了一個開源分布式隊列框架,它的效率非常低。因為,我花費了大量的時間在開發(fā)應(yīng)用程序和對應(yīng)用程序進行調(diào)優(yōu)。因此,這個項目瀕臨失敗。隨后,其他團隊的一個成員建議我使用Hadoop。我花費了一整天的時間建立了一個具有20臺機器的Hadoop集群,接下來,試驗性的執(zhí)行了它的樣例程序以后,我的團隊花了幾個小時的時間想出了一個解決方案,在這個解決方案中包含了九個Map方法和三個Reduce方法。目標(biāo)是每一個Map和Reduce方法不能超過100行的代碼量。那一周結(jié)束后,我們實現(xiàn)的基于Hadoop的應(yīng)用程序就已經(jīng)比原來的實現(xiàn)更快和更穩(wěn)定。使用H
7、adoop能夠很容易的把分布式應(yīng)用程序并行的運行在集群上,集群上的一個節(jié)點的失敗不會影響其他節(jié)點的操作,一個作業(yè)在一個節(jié)點上的失敗,Hadoop會分配其他的節(jié)點進行重試,因為這些優(yōu)點,Hadoop已經(jīng)成為我最喜歡的開發(fā)工具之一。谷歌和雅虎都是用MapReduce集群來處理以P數(shù)量級計算的大數(shù)據(jù)集。在2008年初,谷歌宣布它每天通過MapReduce處理20P的數(shù)據(jù),請參考http://google