mapreduce 中 map數量與文件大小的關系


     學習mapreduce過程中, map第一個階段是從hdfs 中獲取文件的並進行切片,我自己在好奇map的啟動的數量和文件的大小有什么關系,進過學習得知map的數量和文件切片的數量有關系,那文件的大小和切片的數量的有什么關系 ,下面我就進入Hadoop的源代碼進行研究一下 文件的大小和切片的數量有什么關系。

     文件獲取和切片和一個InputFormat 這個抽象類有關系 ,這個抽象類 只有兩個抽象的方法 分別是

    

   第一個方法是用來過去切片,第二方法使用獲取文件。獲取切片與第一個方法有關,我們進入研究這個方法 那我們看一下這個類的實現類是怎樣來實現這個方法的

子類的實現方法太長 我們就看和我們相關的東西 來探究文件的大小和切片數量有什么關系

  

      這一部分是用來處理文件大小和切片的關系,blocksize 是就是128M  那個SPLIT_SLOP 那個值是1.1 length 的長度是用來表示文件的長度,那從上面不難看出,如果有一個一個文件的大小與塊大小進行求余運算的如果小於12.8的話 那多出來那部分不會重新分配一個切片,會和最后一個切片組成一個切片 也就是說,如果一個129M的文件的話他就會是一個切片而不是兩個,我在某些書中看到這個這樣的說法 就是如果一個文件的大小與塊大小進行相除除不盡的話,就需要多分出一個切片這種說法是不正確的,這要看文件的大小來看,取余小於12.8M的話,那就不會分出一個切片。我想寫這個代碼的人也是有考慮的如果文件的大小僅僅比一個塊多一點而運行一個map 這樣是非常浪費資源的,所以會將最后一個切片的大小會進行改變。 

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM