• mapreduce分片


      我们编写的mapreduce程序,也即Job,当它被提交到云计算平台以后,根据输入文件的大小,mapreduce框架会创建若干个map任务,map任务的数量有分片(split)的个数决定,那么待处理的数据会被划分成几个split呢,很明显,这是有split的大小决定的,下面让我们来看一下split大小的计算方法(摘自高清元的微博:http://weibo.com/576203331)。

      splitSize=max(minSize,min(goalSize,dfs.block.size))

      minSize=max(mapred.min.split.size,minSplitSize)(mapred.min.split.size默认为一个字节,minSplitSize随着FileInputFormat的不同而不同,TextInputFormat中默认大小为一个字节)

      goalSize=totalSize/mapred.map.tasks(totalSize为输入文件的大小,mapred.map.tasks的默认值为2)

    默认情况下,splitSize的大小也就是min(goalSize,dfs.block.size)。

      当我们的输入文件大小为100M时,若mapred.map.tasks的值为2,则goalSize的大小为50,倘若dfs.block.size的值为64,那么分片的大小splitSize为50,当满足:

    1. 文件大小/splitSize>1.1时,创建一个split,文件剩余大小=文件大小-splitSize
    2. 文件剩余大小/splitSize<=1.1时,剩余的部分作为一个split

    所以,map数是2,第一个分片的大小为50,第二个分片的大小为50。

      若mapred.map.tasks的值为1,则splitSize的大小为64,map数目同样是2,第一个分片的大小为64,第二个分片的大小为36。

      

  • 相关阅读:
    SourceInsight宏插件3(非常好用,强力推荐)
    SourceInsight宏插件2(非常好用,强力推荐)
    Beyond Compare 3添加右键菜单
    OpenCV图像读取和写入
    TY科技的工程配置(VS2017 & Opencv4.0.0)
    Visual Studio2017 & pcl1.8.1 库的配置
    LeetCode No.198
    LeetCode No.191
    LeetCode No.190
    LeetCode No.179**
  • 原文地址:https://www.cnblogs.com/yueliming/p/3061040.html
Copyright © 2020-2023  润新知