<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


        大數(shù)據(jù)學習路線分享MAPREDUCE,需求:統(tǒng)計大量的文本文件中的單詞出現(xiàn)的次數(shù)

      *
      1)整個運算需要分階段

      * 階段一:并行局部運算
      * 階段二 :匯總處理,不同的階段需要開發(fā)不同的程序
      * 2)階段之間的調(diào)用
      * 3)業(yè)務程序(task程序)如何并發(fā)到集群并啟動程序
      * 4)如何監(jiān)控task程序的運行狀態(tài),如何處理異常
      * ::這些問題是開發(fā)分布式程序都會面臨的問題,完全可以封裝成框架::
      MR 的結(jié)構(gòu)
      * 一個完整的MapReduce運行時有三類實例進程:
      * 1)MRAppMaster : 負責整個程序的過程調(diào)度和狀態(tài)調(diào)度
      * 2)mapTask:負責map階段的整個數(shù)據(jù)處理流程
      * 3)ReduceTask:負責reduce階段的整個數(shù)據(jù)處理流程
      MR設計框架
      ::MAPERDUCE詳細框架::
      - 1)資源如何分發(fā)?
      ::放到HDFS:::中不能由客戶端發(fā)送,如果配置1000臺機器,也不能做pipeline,所以,可以把jar放在HDFS中的一個目錄下。 -
      2)雖然有上千臺機器,現(xiàn)在job只需要20臺機器即可完成,由誰決定是哪20臺機器?::ResourceManager:: 作為master -
      3)worker--NODEMANAGER,執(zhí)行應用程序,監(jiān)控應用程序的資源使用情況(cpu,磁盤,網(wǎng)絡,硬盤)并且向調(diào)度器ResourceManager匯報

      ::作業(yè)提交流程::

      * 1)客戶端提交作業(yè)給resourcemanager
      * 2)resourcemanager返回jobid,存儲路徑path信息
      * 3)客戶端將job.jar 、job.split(確定需要運行多少task)、job.splitinfo等資源上傳到HDFS的存儲路徑
      * 4)上傳到hdfs完成后,客戶端通知resourcemanager啟動job
      * 5)resourcemanager將job加入到job等待隊列
      ,然后nodemanager啟動container,將資源下載到container內(nèi),向客戶端發(fā)出請求啟動master
      * 6)Appmaster向resourcemanager請求maptask的資
      *
      7)resourcemanager分配資源,從hdfs下載jar到container中,master啟動maptask,通過心跳機制,檢查job.split
      * 8)maptask執(zhí)行完成,通知Appmaster,釋放maptask資源。
      分片機制

      ::如何確定需要運行多少task(并行度)::



      *
      決定需要多大的并行度

      * map階段并行度:客戶端首先查看一下待處理數(shù)據(jù)目錄下的數(shù)據(jù)量
      /data/a.txt 1G
      /data/b.txt 800M

      * 循環(huán)遍歷:對每個文件看文件有多少個block,將block數(shù)量累加到計數(shù)器
      *
      返回一任務規(guī)劃描述文件:job.split:
      - [ ] split0: /data/a.txt 0-128M - [ ] split1: /data/a.txtx 128-256M ….. - [
      ] split8: /data/b.txt 0-128M
      寫入HDFS中

      *
      分片和分塊不同:

      * 分片是邏輯概念,給task一個數(shù)據(jù)處理的范圍
      * 存在冗余(10%),偏移量和數(shù)據(jù)大小
      * 特性:移動計算(jar包中封裝的計算)而不是移動數(shù)據(jù)
      編寫MR程序的步驟:
      1、用戶編寫程序分為三個部分:Mapper、Reducer、Driver
      2、Mapper的輸入數(shù)據(jù)是kv對的形式(數(shù)據(jù)類型可自定義)
      3、Mapper的輸出數(shù)據(jù)是kv對的形式(數(shù)據(jù)類型可自定義)
      4、Mapper中的業(yè)務邏輯寫在map()方法中
      5、Map()方法對每一對kv值調(diào)用一次
      6、Reducer的輸入數(shù)據(jù)是kv對的形式(數(shù)據(jù)類型可自定義)
      7、Reducer的輸出數(shù)據(jù)是kv對的形式(數(shù)據(jù)類型可自定義)
      8、Reducer中的業(yè)務邏輯寫在reduce()方法中
      9、ReduceTask進程對每一組相同的key的調(diào)用一次reduce()方法
      10、用戶自定義的Mapper、Reducer類都要繼承各自的父類
      11、整個程序需要一個Driver來進行提交,提交是一個描述了各種必要信息的job對象

      * 案例:wordcount
      * 需求:有一批數(shù)據(jù)文件(TB或者PB級別的數(shù)據(jù)),如何統(tǒng)計這些文件中的單詞出現(xiàn)次數(shù)

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          国产福利不卡 | 羞羞影院午夜男女爽爽视频 | 黄片A片 婷婷国产AV | A∨在线视频 | 毛片基地免费看 | 操操操综合 | 强开小嫩苞毛片一二三区 | 狼友在线视频观看 | 亚洲成网站 | 91探花在线 |