分享

hadoop map数

sonofwinds 发表于 2015-10-28 14:42:29 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 10617
如果我有一个10M的文件,那么执行mr任务时,会有几个map任务数呢,我是默认配置,
说一下我的困惑,网上说的算法splitSize = max (minSize, min(goalSize, dfs.block.size)),假如dfs.block.size=64M,而mapred.map.tasks的默认值是2,那么goalSize=5M,那么splitSize=5M,是吗

已有(2)人评论

跳转到指定楼层
NEOGX 发表于 2015-10-28 19:08:16
个人认为5M是对的,

map的数量map的数量通常是由hadoop集群的DFS块大小确定的,也就是输入文件的总块数,正常的map数量的并行规模大致是每一个Node是10~100个,对于CPU消耗较小的作业可以设置Map数量为300个左右,但是由于hadoop的每一个任务在初始化时需要一定的时间,因此比较合理的情况是每个map执行的时间至少超过1分钟。具体的数据分片是这样的,InputFormat在默认情况下会根据hadoop集群的DFS块大小进行分片,每一个分片会由一个map任务来进行处理,当然用户还是可以通过参数mapred.min.split.size参数在作业提交客户端进行自定义设置。还有一个重要参数就是mapred.map.tasks,这个参数设置的map数量仅仅是一个提示,只有当InputFormat 决定了map任务的个数比mapred.map.tasks值小时才起作用。同样,Map任务的个数也能通过使用JobConf 的conf.setNumMapTasks(int num)方法来手动地设置。这个方法能够用来增加map任务的个数,但是不能设定任务的个数小于Hadoop系统通过分割输入数据得到的值。当然为了提高集群的并发效率,可以设置一个默认的map数量,当用户的map数量较小或者比本身自动分割的值还小时可以使用一个相对交大的默认值,从而提高整体hadoop集群的效率。

更多:
如何确定 Hadoop map和reduce的个数--map和reduce数量之间的关系是什么?
http://www.aboutyun.com/thread-6945-1-1.html
关于mapreduce中,map个数的确认
http://www.aboutyun.com/thread-6038-1-1.html
hive如何设置map和reduce 个数的设定
http://www.aboutyun.com/thread-5909-1-1.html









回复

使用道具 举报

sonofwinds 发表于 2015-10-28 19:27:35
NEOGX 发表于 2015-10-28 19:08
个人认为5M是对的,

map的数量map的数量通常是由hadoop集群的DFS块大小确定的,也就是输入文件的总块数 ...

感谢你的回答,但是看到的好多材料都说默认情况下,就是一个分片大小就是一个blocksize,这让我很纠结
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条