Hadoop新版本中map任務待處理split大小的計算方法


1. split大小的計算公式

   minSize=max{minSplitSize,mapred.min.split.size} (minSplitSize大小默認為1B)

   maxSize=mapred.max.split.size(不在配置文件中指定時大小為Long.MAX_VALUE)

   splitSize=max{minSize,min{maxSize,blockSize}}(注意,blockSize為文件在hdfs中的塊大小,比如我們先配置的dfs.block.size的值為67108864,也即64MB,后向分布式文件系統中存入一個1GB大小的文件A,該文件在hdfs中的塊大小為64MB;當我們更改dfs.block.size的值為33554432,即32MB是,此時A文件在分布式文件系統中的blockSize仍為64M,切記啊,這個就曾迷糊俺好長時間.....)

    mapred.min.split.size、mapred.max.split.size、blockSize均可以再配置文件中配置,前面兩個在mapred-site.xml中,最后一個可在在hdfs-site.xml中進行配置,單位均為B。

2.map數是這樣計算方式

  文件大小/splitSize>1.1,創建一個split0,文件剩余大小=文件大小-splitSize

   .....

  剩余文件大小/splitSize<=1.1 將剩余的部分作為一個split

  每一個分片對應一個map任務,這樣map任務的數目也就顯而易見啦。 


免責聲明!

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



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