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

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

生活随笔

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

编程问答

MR的分片机制

發(fā)布時(shí)間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MR的分片机制 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分片機(jī)制

分片簡(jiǎn)介

Hadoop將MapReduce的MapReduce的輸入數(shù)據(jù)劃分為等長(zhǎng)的小數(shù)據(jù)塊,稱之為輸入分片(inputSpilt)或者簡(jiǎn)稱“分片”Hadoop為為一個(gè)分片構(gòu)建一個(gè)單獨(dú)的map任務(wù),并由該任務(wù)來(lái)運(yùn)行用戶自定義的map方法,從而處理分片的每一條數(shù)據(jù)

分片大小的選擇

1. 擁有許多分片,每個(gè)分片所需時(shí)間小于整體的時(shí)間 2. 并行處理分片,且每個(gè)分片比較小,負(fù)載均衡,好的計(jì)算機(jī)處理更快,可以騰出時(shí)間做其他計(jì)算 3. 分片太小,管理分片的時(shí)間和構(gòu)建map的時(shí)間將會(huì)決定整個(gè)作業(yè)執(zhí)行使時(shí)間 4. 分片跨數(shù)據(jù)塊會(huì)使占用帶寬效率更低 5. 最佳分片大小應(yīng)該和HDFS的塊大小一致。hadoop2.x默認(rèn)128M

創(chuàng)建分片的過(guò)程

1.獲取文件的位置以及大小 2.判斷文件是否可以分片(壓縮格式有的可以分片,有的不行) 3.獲取分片大小 4.剩余文件的大小/分片的大小>1.1時(shí)循環(huán)封裝分片的信息,1.封裝一個(gè)分片的信息(包含路徑,分片的起使偏移量,要處理的大小,分片包含的塊信息,分片中包含的塊在那些機(jī)器上)2.剩余文件<1.1且不為零形成一個(gè)分片,hadoop分片允許10%的冗余

讀取分片的細(xì)節(jié):如果有多個(gè)分片

  • 第一個(gè)分片讀到末尾再多讀一行
  • 因?yàn)橐话銇?lái)說(shuō)讀到最后一行的時(shí)候有很大可能不是正好一行結(jié)束因此可以一般要多讀取一行。
  • 既不是第一個(gè)分片也不是最后一個(gè)分片第一行數(shù)據(jù)舍棄,末尾多讀一行
  • 舍棄是因?yàn)樯弦粋€(gè)塊已經(jīng)讀過(guò)了
  • 最后一個(gè)分片舍棄第一行,末尾多讀一行

MapTask的執(zhí)行流程

1.根據(jù)分片機(jī)制將文件分為多個(gè)片每個(gè)分片對(duì)應(yīng)一個(gè)container,map調(diào)用FileInputFormat的
getRecordReader讀取分片數(shù)據(jù)
2.MapTask每次讀取數(shù)據(jù),讀取一行返回一個(gè)<K,V>鍵值對(duì),其中K是偏移量,V是一行數(shù)據(jù)
3.將K,V對(duì)叫給MapTask處理,每讀取一行就要進(jìn)行一次MapTask
4.每對(duì)鍵值對(duì)調(diào)用一次map(K,V,context)方法,然后使用context.write(K,V)寫(xiě)出
5.寫(xiě)出的數(shù)據(jù)通過(guò)收集器OutputCollector.collector()處理
6.寫(xiě)到環(huán)形緩沖區(qū)中(環(huán)形緩沖區(qū)默認(rèn)大小為100M,緩沖區(qū)中存儲(chǔ)的有原始數(shù)據(jù)從順時(shí)針?lè)较驅(qū)懭?br /> ,將原始數(shù)據(jù)的偏移量,結(jié)束位置,分片請(qǐng)況等逆時(shí)針寫(xiě)入環(huán)形緩沖區(qū)中)
7.當(dāng)?shù)竭_(dá)閾值默認(rèn)是80%時(shí)開(kāi)始開(kāi)始溢寫(xiě)到磁盤(pán),溢寫(xiě)到磁盤(pán)時(shí)會(huì)進(jìn)行一定的排序)方便使用,并且繼續(xù)寫(xiě)入剩余的20%若是寫(xiě)滿則阻塞。
8默認(rèn)的分區(qū)規(guī)則是hashpatitioner,即key的hash%reduceNum
9. 默認(rèn)的排序規(guī)則是key的字典順序,使用的是快速排序
10. 溢寫(xiě)會(huì)形成多個(gè)文件,在maptask讀取完一個(gè)分片數(shù)據(jù)后,先將環(huán)形緩沖區(qū)數(shù)據(jù)刷寫(xiě)到磁盤(pán)
11將數(shù)據(jù)多個(gè)溢寫(xiě)文件進(jìn)行合并,分區(qū)內(nèi)排序(外部排序===》歸并排序)

reduce

  • ReduceTask通過(guò)數(shù)據(jù)分區(qū)規(guī)則抓取相應(yīng)的數(shù)據(jù)到reducetask(通過(guò)HTTP協(xié)議)
    若是數(shù)據(jù)小則放在內(nèi)存暫時(shí)存儲(chǔ)等待處理,若是抓取的數(shù)據(jù)過(guò)多則需要溢寫(xiě)在磁盤(pán)溢寫(xiě)前會(huì)進(jìn)行合,溢寫(xiě)可能會(huì)形成多個(gè)文件,最終要將文件合并,合并時(shí)默認(rèn)最后合并十個(gè)文件
  • Reduce將多個(gè)maptask的數(shù)據(jù)進(jìn)行合并,排序
  • 按照key相同分組()
  • 一組數(shù)據(jù)調(diào)用一次reduce(k,iterablevalues,context)
  • 處理后的數(shù)據(jù)交由reducetask
  • reducetask調(diào)用FileOutputFormat組件
  • FileOutputFormat組件中的write方法將數(shù)據(jù)寫(xiě)出
  • 總結(jié)

    以上是生活随笔為你收集整理的MR的分片机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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