小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

hadoop小試牛刀

 印度阿三17 2018-09-26

hadoop:

  • 開源分布式平臺
  • 核心:HDFS、MapReduce
  • HDFS在集群上實(shí)現(xiàn)分布式文件系統(tǒng)
  • MapReduce在集群上實(shí)現(xiàn)分布式計(jì)算和任務(wù)處理

1 HDFS體系結(jié)構(gòu)

一個(gè)HDFS集群是由一個(gè)NameNode和若干個(gè)DataNode組成。

  • NameNode(名字節(jié)點(diǎn)):管理文件系統(tǒng)的命名空間和客戶端對文件的訪問操作
    (1)執(zhí)行文件系統(tǒng)的命名空間操作,如打開、關(guān)閉、重命名文件或目錄
    (2)負(fù)責(zé)數(shù)據(jù)塊到具體DataNode的映射
  • DataNode(數(shù)據(jù)節(jié)點(diǎn)):管理存儲的數(shù)據(jù)
    (1)負(fù)責(zé)處理文件系統(tǒng)客戶端的文件讀寫請求
    (2)在NameNode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制工作

在這里插入圖片描述

2 MapReduce體系結(jié)構(gòu)

MapReduce框架是由一個(gè)單獨(dú)運(yùn)行在主節(jié)點(diǎn)的JobTracker和運(yùn)行在每個(gè)集群從節(jié)點(diǎn)的TaskTracker共同組成的。

  • JobTracker:調(diào)度和管理其他TaskTracker
  • TaskTracker:負(fù)責(zé)執(zhí)行任務(wù) ,運(yùn)行于DataNode之上

3 MapReduce任務(wù)處理流程

思想:分而治之

  • 用戶自定義的Map函數(shù)把輸入的鍵值對映射(map)成一組新的鍵值對
  • MapReduce把所有具有相同的key值的value集合一起,傳遞給Reduce函數(shù)
  • 用戶自定義的Reduce函數(shù)對相同key下的所有value進(jìn)行處理再輸出最終的鍵值對

4 MapReduce應(yīng)用案例

4.1 單詞計(jì)數(shù)

解決方案

  • 將文件內(nèi)容切分為單詞
  • 將所有相同的單詞聚集在一起
  • 計(jì)算單詞出現(xiàn)的次數(shù)并輸出

設(shè)計(jì)思路

  • map階段:完成由輸入數(shù)據(jù)到單詞切分的工作 <行號,內(nèi)容> --> <word,1>
  • reduce階段:接收所有單詞并計(jì)算其頻數(shù) <word,{1,1,…}> --> <word,sum>

4.2 數(shù)據(jù)去重

解決方案

  • 將文件內(nèi)容切分為單詞
  • 將所有相同的單詞聚集在一起
  • 接收元組,直接輸出key

設(shè)計(jì)思路

  • map階段:完成由輸入數(shù)據(jù)到單詞切分的工作 <行號,內(nèi)容> --> <word,1>
  • reduce階段:接收單詞并直接輸出鍵 <word,{1,1,…}> --> <word,NAN>

4.3 數(shù)據(jù)排序

解決方案

  • 利用hadoop自帶的排序
  • 將數(shù)據(jù)轉(zhuǎn)為IntWritable類型
  • hadoop自動對所有的元組進(jìn)行基于Key的排序
  • 接收元組,直接輸出key,根據(jù)輸入value-list中的元素個(gè)數(shù)決定key的輸出次數(shù)

設(shè)計(jì)思路

  • map階段:將輸入的value轉(zhuǎn)為IntWritable類型,作為輸出的key <行號,data> --> <data,1>
    • 自定義partition函數(shù):
      (1)注意:reduce自動排序僅僅是發(fā)送到自己所在節(jié)點(diǎn)的數(shù)據(jù),使用默認(rèn)的排序不能保證全局順序
      (2)根據(jù)輸入數(shù)據(jù)的最大值和mapreduce框架中partition的數(shù)量獲取將輸入數(shù)據(jù)按照大小分塊的邊界,然后根據(jù)輸入數(shù)據(jù)和邊界的關(guān)系返回對應(yīng)的partition ID
  • reduce階段:將輸入的key復(fù)制到輸出的value上,根據(jù)輸入value-list中的元素個(gè)數(shù)決定key的輸出次數(shù),用全局linenum代表key的位次 <data,{1,1,…}> --> <linenum, data>

4.4 單/多表連接

解決方案

  • 區(qū)分輸入行是左表還是右表,然后對兩列值進(jìn)行分割,連接列保存在key中,其他列和左右表標(biāo)識保存在value中
  • 解析map輸出,將value中數(shù)據(jù)按照左右表標(biāo)識分別保存,求笛卡爾積并輸出

設(shè)計(jì)思路

  • map階段:識別出輸入的行屬于哪個(gè)表后,對其進(jìn)行分割,將連接的列值保存在key中,另一列和左右表標(biāo)識保存在value中,然后輸出<行號,行數(shù)據(jù)> --> <連接列值,其他列值和左右表標(biāo)識>
  • reduce階段:拿到連接結(jié)果后,解析value內(nèi)容,根據(jù)標(biāo)識將左右表內(nèi)容分開存放,求笛卡爾積最后直接輸出 <連接列值,{其他列值和左右表標(biāo)識,其他列值和左右表標(biāo)識,…}> --> <連接列值,左表其他列值和右表其他列值的笛卡爾積>

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多