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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

第十六期:简单的介绍一下大数据中最重要的MapReduce

發(fā)布時(shí)間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十六期:简单的介绍一下大数据中最重要的MapReduce 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MapReduce是分布式運(yùn)行的,由兩個(gè)階段組成:Map和Reduce,Map階段是一個(gè)獨(dú)立的程序,有很多個(gè)節(jié)點(diǎn)同時(shí)運(yùn)行,每個(gè)節(jié)點(diǎn)處理一部分?jǐn)?shù)據(jù)。

?


MapReduce執(zhí)行流程圖

概述

MapReduce是一種分布式計(jì)算模型,由Google提出,主要用于搜索領(lǐng)域,解決海量數(shù)據(jù)的計(jì)算問題。

MapReduce是分布式運(yùn)行的,由兩個(gè)階段組成:Map和Reduce,Map階段是一個(gè)獨(dú)立的程序,有很多個(gè)節(jié)點(diǎn)同時(shí)運(yùn)行,每個(gè)節(jié)點(diǎn)處理一部分?jǐn)?shù)據(jù)。

Reduce階段是一個(gè)獨(dú)立的程序,有很多個(gè)節(jié)點(diǎn)同時(shí)運(yùn)行,每個(gè)節(jié)點(diǎn)處理一部分?jǐn)?shù)據(jù)。

使用

MapReduce框架都有默認(rèn)實(shí)現(xiàn),用戶只需要覆蓋map()和reduce()兩個(gè)函數(shù),即可實(shí)現(xiàn)分布式計(jì)算,非常簡單。

這兩個(gè)函數(shù)的形參和返回值都是,使用的時(shí)候一定要注意構(gòu)造。

執(zhí)行流程(此處舉例說明)

  • 一個(gè)文本(在HDFS上面保存,兩個(gè)block)中每一個(gè)單詞的出現(xiàn)的次數(shù):?
  • ????hello?you?hello?marry?
  • ????hello?me?really?
  • ????????????----->block-1?
  • ?????????????
  • ????hello?kate?ready?
  • ????xiao?wang?hello?tomcat?
  • ????????????----->block-2?
  • 1.獲取每一個(gè)block塊中的文本,遍歷所有,回去其中的一行str

    因?yàn)橐y(tǒng)計(jì)的是每一個(gè)單詞i的次數(shù),所以還需要直到文本中有哪些單詞,可以根據(jù)字符串的特點(diǎn),使用split()進(jìn)行切割。

  • String[]?words=str.split("");?
  • 根據(jù)要求,需將每一個(gè)單詞i轉(zhuǎn)換為的形式,k為單詞本身,v為單詞出現(xiàn)的次數(shù)。

    2.因?yàn)閙r的計(jì)算是分布式的 ,每一個(gè)map(稱之為一個(gè)mapper task)計(jì)算其中的一個(gè)block塊數(shù)據(jù)。

  • map階段:?
  • ????輸入<K1,V1>?
  • ????????k1,偏移量,v1,當(dāng)前行文本內(nèi)容?
  • ????????map()函數(shù)操作?
  • ????輸出<K2,V2>?
  • ????????k2,具體單詞,v2,單詞對應(yīng)的統(tǒng)計(jì)項(xiàng),比如次數(shù)?
  • ????輸出<K2,V2>?
  • shuffle階段?
  • 研究后發(fā)現(xiàn),如果按照<key,1>這種方式向reduce輸出數(shù)據(jù)的時(shí)候,會(huì)有?
  • 大量的冗余數(shù)據(jù)。?
  • 比如map階段之后有5個(gè)hello,則輸出<hello,1>,<hello,1>,<hello,1>,?
  • <hello,1>,<hello,1>5次,實(shí)際上會(huì)對網(wǎng)絡(luò)造成一定的壓力,能不能對?
  • 這5個(gè)<hello,1>進(jìn)行一個(gè)進(jìn)入reduce之前的本地組合?比如成為?
  • <hello,5>或者<hello,[1,1,1,1,1]>.?
  • 這個(gè)過程成為shuffle,洗牌重組階段,達(dá)到上述的結(jié)果,稱之為規(guī)約。?
  • >>>shuffle階段,也就是對map的輸出進(jìn)行重新洗牌:?
  • 分區(qū)、分組、排序?
  • <K2,V2>...===><K2,V2s>?
  • reduce階段?
  • 接收map的輸出結(jié)果<key,values>?
  • 對這個(gè)結(jié)果進(jìn)行匯總統(tǒng)計(jì),針對values,進(jìn)行簡單的累加,計(jì)算得出key?
  • 對應(yīng)的次數(shù)?
  • reduce針對一個(gè)key調(diào)用一次reduce()函數(shù)?
  • =====>reduce?階段?
  • 輸入<K2,V2>?
  • ????K2,就是map的輸出的K2,V2s是map經(jīng)過shuffle之后的結(jié)果集?
  • ????reduce()函數(shù)操作?
  • 轉(zhuǎn)化為<K3,V3>???
  • 經(jīng)過上述操作之后,系統(tǒng)會(huì)將計(jì)算結(jié)果輸出給用戶,一般會(huì)先存儲(chǔ)(落地)到hdfs,然后反饋給用戶。

    到此為止,MapReduce執(zhí)行完畢,接下來就可以進(jìn)行大數(shù)據(jù)的其他一系列操作了。


    閱讀目錄(置頂)(長期更新計(jì)算機(jī)領(lǐng)域知識(shí))https://blog.csdn.net/weixin_43392489/article/details/102380691

    閱讀目錄(置頂)(長期更新計(jì)算機(jī)領(lǐng)域知識(shí))https://blog.csdn.net/weixin_43392489/article/details/102380882

    總結(jié)

    以上是生活随笔為你收集整理的第十六期:简单的介绍一下大数据中最重要的MapReduce的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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