日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop自学笔记(三)MapReduce简单介绍

發(fā)布時(shí)間:2023/12/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop自学笔记(三)MapReduce简单介绍 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.?MapReduce?Architecture

MapReduce是一套可編程的框架,大部分MapReduce的工作都能夠用Pig或者Hive完畢。可是還是要了解MapReduce本身是怎樣工作的,由于這才是Hadoop的核心,而且能夠?yàn)橐院髢?yōu)化和自己寫(xiě)做準(zhǔn)備。

?

Job?Client,?就是用戶(hù)

Job?TrackerTask?Tracker也是一種Master?-?Slave構(gòu)建

?

工作流程(MapReduce?Pipeline

?

Job?Client提交了MapReduce的程序(比方jar包中的二進(jìn)制文件)。所須要的數(shù)據(jù),結(jié)果輸出位置,提交給Job?Tracker.?Job?Tracker會(huì)首先詢(xún)問(wèn)Name?Node,?所須要的數(shù)據(jù)都在哪些block里面,然后就近選擇一個(gè)Task?Tracker(離這些所需數(shù)據(jù)近期的一個(gè)task?tracker,可能是在同一個(gè)Node上或者同一個(gè)Rack上或者不同rack),把這個(gè)任務(wù)發(fā)送給該Task?Tracker,?Task?Tracker來(lái)真正運(yùn)行該任務(wù)。Task?Tracker內(nèi)部有Task?Slots來(lái)真正運(yùn)行這些任務(wù)。假設(shè)運(yùn)行失敗了。Task?Tracker就好匯報(bào)給Job?Tracker,?Job?Tracker就再分配給別的Task?Tracker來(lái)運(yùn)行。Task?Tracker在運(yùn)行過(guò)程中要不斷的向Job?Tracker匯報(bào)。最后Task?Tracker運(yùn)行完畢后,匯報(bào)給Job?TrackerJob?Tracker就更新任務(wù)狀態(tài)為成功。

?

注意,當(dāng)用戶(hù)提交一個(gè)MapReduce任務(wù)的時(shí)候,不只同一時(shí)候把任務(wù)提交給Job?Tracker,同一時(shí)候還會(huì)拷貝一份到HDFS的一個(gè)公共位置(圖中的咖啡位置),由于傳遞代碼和命令相對(duì)要easy一些。然后Task?Tracker就能夠非常方便的得到這些代碼。

?

詳細(xì)步驟就是圖中的7步。





2.?MapReduce?Internals

?

Split階段:依據(jù)Input?Format。把輸入數(shù)據(jù)切割成小部分,該階段與Map任務(wù)同一時(shí)候運(yùn)行,切割后就放到不同的Mapper里面。

Input?Format:?決定了數(shù)據(jù)怎樣被切割放入Mapper。比方Log,?數(shù)據(jù)庫(kù),二進(jìn)制碼,等。

Map階段:把切割后傳入的splits轉(zhuǎn)化成一些key-value對(duì)。怎樣轉(zhuǎn)化取決于用戶(hù)代碼怎么寫(xiě)的。

Shuffle?&?Sort階段:把Map階段得到的數(shù)據(jù)歸類(lèi),然后送給Reducers

Reduce階段:把送入的Map數(shù)據(jù)(Key,?Value)依照用戶(hù)的代碼進(jìn)行整合處理。

Output?Format:?Reduce階段處理完后。結(jié)果依照此格式放入HDFS的輸出文件夾。

?

Imperative?Programming?Paradigm:?把計(jì)算當(dāng)做一系列改變程序狀態(tài)的過(guò)程。

也就是程序化編程。更加關(guān)注對(duì)象和狀態(tài)。

?

Functional?Programming?Paradigm:?大致就是函數(shù)化編程,把一系列計(jì)算作為一個(gè)數(shù)學(xué)函數(shù)。Hadoop使用的是這樣的編程范式。

有輸入,有輸出;沒(méi)有對(duì)象沒(méi)有狀態(tài)。


?

為了優(yōu)化起見(jiàn),Hadoop還加入了很多其它的一個(gè)接口,combine階段,見(jiàn)下圖。主要是在輸送到Shuffle/sort階段前。如今本地進(jìn)行一次小的Reduce計(jì)算。這樣能夠省非常多帶寬(還記得job的代碼放入一個(gè)公共區(qū)域了嗎)


上面的整個(gè)過(guò)程看上去可能不那么直觀,可是這是Hadoop最難理解的部分了。理解了這個(gè)流程(Hadoop?Pipeline),就更easy理解以后的內(nèi)容了。

?

3.?MapReduce?Example

?

舉樣例來(lái)說(shuō)明,在實(shí)際的機(jī)器操作中Hadoop怎樣完畢上述任務(wù)。

?

Windows環(huán)境下安裝了一個(gè)hyperV軟件。里面有四個(gè)Hadoop節(jié)點(diǎn)。每一個(gè)Hadoop節(jié)點(diǎn)都是一個(gè)Ubuntu環(huán)境。



能夠看到上面有一個(gè)Name?Node,還有三個(gè)Data?Node

首先,連接上Name?Node。而且打開(kāi)一個(gè)Data?Node節(jié)點(diǎn)。

進(jìn)入Name?NodeUbuntu系統(tǒng)中。打開(kāi)一個(gè)終端。輸入jps,能夠看到jvm里面正在運(yùn)行的東西。


在Data?Node機(jī)器中運(yùn)行相同命令,能夠看到里面運(yùn)行著DataNode, Jps, TaskTracker三個(gè)內(nèi)容。

?

首先進(jìn)入Data?Node的機(jī)器里面。到根文件夾以下創(chuàng)建一個(gè)文件,叫words.txt,文件內(nèi)容就是上圖中要分析的一些詞。


第二步。把這個(gè)Words.txt文件放入HDFS中。

首先

hadoop/bin/hadoop?fs?-ls?

查看眼下HDFS中的文件

然后新建一個(gè)文件夾

Hadoop/bin/hadoop?fs?-mkdir?/data



我們能夠使用瀏覽器來(lái)看看HDFS中的文件系統(tǒng)

瀏覽器中輸入hnname:50070,打開(kāi)Web?UI


能夠再Live?Nodes里面看到剛剛新建的data文件夾。運(yùn)行

hadoop/bin/hadoop?fs?-copyFromLocal?words.txt?/data

然后words.txt就復(fù)制到/data文件夾下了。能夠使用Web?UI來(lái)驗(yàn)證。

?

第三步,運(yùn)行MapReduce?任務(wù)。

這個(gè)任務(wù)是統(tǒng)計(jì)單詞頻率,這個(gè)任務(wù)已經(jīng)由現(xiàn)成的jar包寫(xiě)好了,在hadoop/bin/文件夾下,hadoop-examples-1.2.0.jar.?這個(gè)文件中面有非常多非常多寫(xiě)好的MapReduce任務(wù)。



運(yùn)行命令:

Hadoop/bin/hadoop?jar?hadoop/hadoop*examples.jar?wordcount?/data/words.txt?/data/results

?

先指定jar包,再指定程序名wordcount,?再指定輸入數(shù)據(jù)/data/words.txt?最后是輸出文件夾/data/results,?沒(méi)有文件夾會(huì)創(chuàng)建一個(gè)。


運(yùn)行完畢后。能夠通過(guò)Web?UI來(lái)看運(yùn)行結(jié)果。



我擦。原來(lái)的圖片太多了發(fā)不了。不得不說(shuō)刪掉幾張。

。。。



轉(zhuǎn)載于:https://www.cnblogs.com/ldxsuanfa/p/9941414.html

總結(jié)

以上是生活随笔為你收集整理的Hadoop自学笔记(三)MapReduce简单介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。