Mapreduce 是一個(gè)分布式運(yùn)算程序的編程框架,核心功能是將用戶編寫(xiě)的業(yè)務(wù)邏輯代碼和自帶默認(rèn)組件整合成一個(gè)完整的 分布式運(yùn)算程序,并發(fā)運(yùn)行在一個(gè) hadoop 集群上。MapReduce采用“分而治之”策略,一個(gè)存儲(chǔ)在分布式文件系統(tǒng)中的大規(guī)模數(shù)據(jù)集,會(huì)被切分成許多獨(dú)立的分片(split),這些分片可以被多個(gè)Map任務(wù)并行處理。 Hadoop 的四大組件: (1)HDFS:分布式存儲(chǔ)系統(tǒng); (2)MapReduce:分布式計(jì)算系統(tǒng); (3)YARN: hadoop 的資源調(diào)度系統(tǒng); (4)Common: 以上三大組件的底層支撐組件,主要提供基礎(chǔ)工具包和 RPC 框架等; 在 MapReduce 組件里, 官方給我們提供了一些樣例程序,其中非常有名的就是 wordcount 和 pi 程序,這些程序代碼都在 hadoop-example.jar 包里,jar包的安裝目錄在Hadoop下,為: 下面我們來(lái)逐一解讀這兩個(gè)樣例程序。 測(cè)試前,先關(guān)閉防火墻,啟動(dòng)Zookeeper、Hadoop集群,依次順序?yàn)?: 成功啟動(dòng)后,查看進(jìn)程是否完整。這些可參考之前博客中關(guān)于集群的搭建。 一、pi樣例程序 (1)執(zhí)行命令,帶上參數(shù) 執(zhí)行程序,參數(shù)含義: 第1個(gè)參數(shù)5指的是要運(yùn)行5次map任務(wù) ; 第2個(gè)參數(shù)5指的是每個(gè)map任務(wù),要投擲多少次 ; 2個(gè)參數(shù)的乘積就是總的投擲次數(shù)(pi代碼就是以投擲來(lái)計(jì)算值)。 通過(guò)上面我們獲得了Pi的值:3.680000,當(dāng)然也可以改變參數(shù)來(lái)驗(yàn)證得出的結(jié)果和參數(shù)的關(guān)系,比如我的參數(shù)換成10和10,則得出的結(jié)果為:3.20000。由此可見(jiàn):參數(shù)越大,結(jié)果越是精確。 (2)查看運(yùn)行進(jìn)程 在執(zhí)行過(guò)程中,它的時(shí)間不定,所以我們可以通過(guò)訪問(wèn)界面,查看具體的運(yùn)行進(jìn)程,訪問(wèn): 界面顯示如下: 從上面我們可以看出:當(dāng)Progress進(jìn)程結(jié)束,即代表運(yùn)算過(guò)程結(jié)束,也可以點(diǎn)擊查看具體的內(nèi)容,這里不做演示了。 二、wordcount樣例程序 (1)準(zhǔn)備數(shù)據(jù),上傳HDFS 簡(jiǎn)單的說(shuō)就是單詞統(tǒng)計(jì),這里我們新建一個(gè)txt文件,輸入一些單詞,方便統(tǒng)計(jì): 輸入以下單詞,并保存: 上傳到HDFS,先在hdfs上創(chuàng)建文件夾,在將txt文件放到該文件夾下,下面是一種創(chuàng)建方式,或者是hadoop fs -mkdir 的方式,二者擇其一,注意路徑: 我們可以通過(guò)訪問(wèn) slave01:50070,查看HDFS文件系統(tǒng): 成功上傳。 (2)運(yùn)行程序 執(zhí)行下面的命令,注意路徑: 命令參數(shù)的含義: 第一個(gè)指的是jar包路徑,第二個(gè)指的是要執(zhí)行的樣例程序名稱wordcount,第三個(gè)指的是文件所在的HDFS路徑,第四個(gè)指的是要輸出的文件目錄(不要是已經(jīng)存在的)。 上面是輸出結(jié)果,同樣的我們可以通過(guò)訪問(wèn) slave01:8088 查看進(jìn)程。 執(zhí)行結(jié)束后,在HDFS文件系統(tǒng)上,可以看到輸出的目錄已經(jīng)創(chuàng)建好了,且里面存在了輸出的文件: 通過(guò)命令,可以查看執(zhí)行后的結(jié)果文件: 從上面可以看出:?jiǎn)卧~已經(jīng)統(tǒng)計(jì)完成,我們可以對(duì)照文件進(jìn)行驗(yàn)證。 好了,上面是對(duì)兩個(gè)已有樣例的解讀,至于代碼方面有空再一起討論吧。
|
|
來(lái)自: 小牛學(xué)堂666 > 《待分類》