开发者社区> 问答> 正文

如何决定一个job中需要多少个maptask和reducetask?

如何决定一个job中需要多少个maptask和reducetask?

展开
收起
芯在这 2021-12-05 21:44:05 700 0
1 条回答
写回答
取消 提交回答
  • 一、影响map个数,即split个数的因素主要有: 1)HDFS块的大小,即HDFS中dfs.block.size的值。如果有一个输入文件为1024m,当块为 256m时,会被划分为4个split;当块为128m时,会被划分为8个split。 2)文件的大小。当块为128m时,如果输入文件为128m,会被划分为1个split;当块为256m,会被划分为2个split。 3)文件的个数。FileInputFormat按照文件分割split,并且只会分割大文件,即那些大小超过HDFS块的大小的文件。如果HDFS中dfs.block.size设置为64m,而输入的目录中文件有100个,则划分后的split个数至少为100个。 4)splitsize的大小。分片是按照splitszie的大小进行分割的,一个split的大小在没有设置的情况下,默认等于hdfs block的大小。但应用程序可以通过两个参数来对splitsize进行调节。 map个数的计算公式如下: splitsize=max(minimumsize,min(maximumsize,blocksize))。 如果没有设置minimumsize和maximumsize,splitsize的大小默认等于blocksize 二、reduce端的个数取决于用户的需求,默认是有一个reduce,可以在代码中声明 reduce的输出个数

    2021-12-05 22:24:25
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载