码迷,mamicode.com
首页 > 其他好文 > 详细

七:maptask并发数量决定机制

时间:2015-12-18 06:59:11      阅读:423      评论:0      收藏:0      [点我收藏+]

标签:it

maptask数量决定机制--数据处理任务的分配机制

  1. 分配机制定义在FileInputFileFormat类中

  2. 分配的宗旨就是将block块数据进行"切分",每一片就交给一个maptask来处理


第一种方式:

   指定切片大小形式这种方式如果切片处理的数据正好也在同一台机器上按照切片大小来读取数据的话如果是从0读到100而这台机器的上的block为128M的话,那剩下的28M则会在另一个Map任务上读取而另一台Map任务需要读取第一台Map任务的处理完后剩余的切片(28M)而这28M是要走网络的所以速度上会慢些.

  技术分享

第二种方式:

   定义Block块大小和切片大小一样大小,这种实现是FileInputFormat的默认实现(排除小文件个人认为这种方式是最好的)

 技术分享

第三种方式:

   如果都是小文件的话第二种方式是不可用的,因为不足Block大小的文件会按照文件大小来生成一个Block块大小,这时候如果分片大小和block大小一样那么就会开启很多个Map而map的开启就会调用java jvm 这时就会很耗费资源,比如map任务开启一个jvm 处理一个3M或几K的文件是很耗费资源的.在出现大量小文件下可以使用combineInputFormat而FileInputFormat机制就不适合使用了,当然最好的办法是在运算处理之前将小文件进行合并

 技术分享


切片机制定义:

FileInputFormat中默认的切片机制:

 

       a/切片大小,默认等于block大小

       b/切片时是针对每一个文件进行切片

比如:  file1.txt    300M

      file2.txt    10M

 

会切成几片: 

file1.txt.split1--  0~128

file1.txt.split2--  128~256

file1.txt.split3--  256~300

file2.txt.split1--  0~10M

 

c/切片的大小也可以自定义:

 

FileInputFormat中,切片主要由这几个值来运算决定

minsize

    1  默认值

   mapreduce.input.fileinputformat.split.minsize

 

maxsize

    Long.MAXValue   默认值

   mapreduce.input.fileinputformat.split.maxsize

 

计算切片的算法:

Math.max(minSize,Math.min(maxSize, blockSize));

    

   参数如果调得比blocksize则会让切片变小,而且就等于配置的这个参数的值

   mapreduce.input.fileinputformat.split.maxsize


   参数调的比blockSize大,则可以让切片变得比blocksize还大

mapreduce.input.fileinputformat.split.minsize


七:maptask并发数量决定机制

标签:it

原文地址:http://zhangyanfeng.blog.51cto.com/3884312/1725855

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!