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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop–Task 相关

發布時間:2025/6/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop–Task 相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在MapReduce計算框架中,一個應用程序被劃分為Map和Reduce兩個計算階段。他們分別由一個或多個Map Task 和Reduce Task組成。

  • Map Task: 處理輸入數據集合中的一片數據,并將產生的若干個數據片段寫到本地磁盤。
  • 按照用戶提供的InputFormat將對應的InputSpilt解析成一系列的key/value, 并以此交給用戶編寫的map()函數處理。
  • 按照指定的Partitioner對數據分片,以確定每個key/value將交給哪個Reducer Task處理。
  • 將數據交給用戶定義的Combiner進行以此本地規約(用戶沒有定義則直接跳過)
  • 將處理結果保存到本地磁盤。
  • Reduce Task: 從每個Map Task上遠程拷貝相應的數據片段,經過分組聚集和規約后,將結果寫到HDFS上作為最終結果。
  • 通過HTTP請求從各個已經運行完成的Map Task上拷貝對應的數據分片。
  • 待數據拷貝完成,以key為關鍵字對所有數據進行排序。通過排序,key相同的記錄聚集在一起形成若干分組。
  • 將每組數據交給用戶編寫的reduce()函數處理。
  • 將結果直接寫到HSFS上面作為最終輸出結果。
  • ?

    IFile

    ??? IFile是一種支持行壓縮的存儲格式。為了減少MapTask寫入磁盤的數據量和跨網絡傳輸的數據量,IFile支持按行壓縮數據記錄。當前Hadoop提供了ZLib(默認壓縮方式)、BZip2等壓縮算法。

    ??? IFile文件格式:<key-len, value-len, key, value>

    排序

    ???? 排序是MapReduce框架中最重要的從a組之一。Map Task和Reduce Task均會對數據(按照key)進行排序。該操作屬于Hadoop的默認行為。任何應用程序均會被排序,而不管邏輯上是否需要。

    ???? 對于Map Task,它會將處理的結果暫時存放到一個緩沖區,當緩沖區使用率達到一定閾值后,在對緩沖區中的數據進行以此排序。并將這些有序集合以IFile文件的形式寫到磁盤上。而當數據處理完畢后,它會對磁盤上所有文件進行一次合并。已將這些文件形成一個大的有序文件。

    ???? 對于Reduce Task,它從每個Map Task上面遠程拷貝相應的數據文件,如果文件大小超過一定閾值,則放到磁盤,否則放到內存。如果磁盤上文件數目達到一定閾值,則進行一次合并以生成一個更大文件;如果內存中文件大小或者數目超過一定閾值,則進行一次合并后寫到磁盤上。當所有數據拷貝完畢后,Reduce Task統一對內存和磁盤上的所有數據進行一次合并。

    ???? Map Task和Reduce Task的緩沖區數據合并使用Hadoop自己實現的快排算法,而IFile文件合并則使用了基于堆實現的優先隊列。

    快排

  • 樞軸選擇:使用序列的首尾和中間元素的中位數作為樞軸
  • 子序列劃分:兩個索引i,j分別從左右兩端掃描,i掃描到大于等于樞軸的等值,j掃描到小于等于樞軸的元素停止,然后交換兩個元素。重復直到相遇
  • 相同元素的優化: 每次劃分子序列,將于樞軸相同的元素集中存放到中間位置,讓它們不再參與后續的遞歸處理過程。即序列劃分三部分:小于樞軸、等于樞軸、大于樞軸
  • 減少遞歸次數:當子序列中元素數目小于13時,直接使用插入排序算法,不再遞歸。
  • 優先隊列

    ? 文件歸并由類Merger完成。其采用多輪遞歸合并的方式。每輪選取最小的前io.sort.factor(默認是10,用戶可配置)個文件進行合并。并將產生的文件重新加入帶合并列表中。知道剩下的文件數目小于io.sort.factor個,此時,他會返回指向由這些文件組成的小頂堆的迭代器。

    Reporter

    ?? Reporter用來完成Task周期性的向TaskTracker匯報最新進度和計數器值。TaskReporter類實現了Reporter接口,并以線程形式啟動。其匯報的信息中包含兩部分:

  • 任務執行進度
  • Map Task 而言: 使用已讀取數據量占數據總量的比例作為任務當前進度值
  • Reduce Task: 其可以分解為三個階段: Shuffle、Sort、Reduce。每個階段占任務總進度的1/3.考慮在Shuttle階段,Reduce Task需要從M(M為Map Task數目)個Map Task上讀取數據。因此,可被分解為M個階段,每個階段占Shuffle進度的1/M。
  • 任務計數器值: 是由Hadoop提供的,用于實現跟蹤任務運行進度的全局技術功能。任務計數器由兩部分組成<name, value>.計數器以組為單位進行管理,一個計數器屬于一個計數器組。Hadoop規定一個作業最多包含120個計數器(可通過參數mapreduce.job.counters.limit設定),50個計數器組。
  • 轉載于:https://www.cnblogs.com/lovemdx/p/3236182.html

    總結

    以上是生活随笔為你收集整理的Hadoop–Task 相关的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。