为了账号安全,请及时绑定邮箱和手机立即绑定

设置地图任务数量和减少任务

设置地图任务数量和减少任务

紫衣仙女 2019-11-13 15:49:17
我目前正在从事一项工作,我将地图任务的数量固定为20,但数量有所增加。我也将reduce任务设置为零,但是我仍然得到一个非零的数字。MapReduce作业完成的总时间也不会显示。有人可以告诉我我在做什么错。我正在使用此命令hadoop jar Test_Parallel_for.jar Test_Parallel_for Matrix/test4.txt Result 3 \ -D mapred.map.tasks = 20 \ -D mapred.reduce.tasks =0输出:11/07/30 19:48:56 INFO mapred.JobClient: Job complete: job_201107291018_016411/07/30 19:48:56 INFO mapred.JobClient: Counters: 1811/07/30 19:48:56 INFO mapred.JobClient:   Job Counters 11/07/30 19:48:56 INFO mapred.JobClient:     Launched reduce tasks=1311/07/30 19:48:56 INFO mapred.JobClient:     Rack-local map tasks=1211/07/30 19:48:56 INFO mapred.JobClient:     Launched map tasks=2411/07/30 19:48:56 INFO mapred.JobClient:     Data-local map tasks=1211/07/30 19:48:56 INFO mapred.JobClient:   FileSystemCounters11/07/30 19:48:56 INFO mapred.JobClient:     FILE_BYTES_READ=402079263611/07/30 19:48:56 INFO mapred.JobClient:     HDFS_BYTES_READ=155653468011/07/30 19:48:56 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=602669905811/07/30 19:48:56 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=192889394211/07/30 19:48:56 INFO mapred.JobClient:   Map-Reduce Framework11/07/30 19:48:56 INFO mapred.JobClient:     Reduce input groups=4000000011/07/30 19:48:56 INFO mapred.JobClient:     Combine output records=011/07/30 19:48:56 INFO mapred.JobClient:     Map input records=4000000011/07/30 19:48:56 INFO mapred.JobClient:     Reduce shuffle bytes=197416226911/07/30 19:48:56 INFO mapred.JobClient:     Reduce output records=4000000011/07/30 19:48:56 INFO mapred.JobClient:     Spilled Records=12000000011/07/30 19:48:56 INFO mapred.JobClient:     Map output bytes=192889394211/07/30 19:48:56 INFO mapred.JobClient:     Combine input records=011/07/30 19:48:56 INFO mapred.JobClient:     Map output records=4000000011/07/30 19:48:56 INFO mapred.JobClient:     Reduce input records=40000000[hcrc1425n30]s0907855: 
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

举例说明:


假设您的hadoop输入文件大小为2 GB,并且将块大小设置为64 MB,因此将设置运行32个Mappers任务,而每个映射器将处理64 MB块以完成Hadoop作业的Mapper作业。


==>设置要运行的映射器的数量完全取决于1)文件大小和2)块大小


假设您在4个集群大小上运行hadoop:假设您将conf文件中的mapred.map.tasks和mapred.reduce.tasks参数设置为节点,如下所示:


Node 1: mapred.map.tasks = 4 and mapred.reduce.tasks = 4

Node 2: mapred.map.tasks = 2 and mapred.reduce.tasks = 2

Node 3: mapred.map.tasks = 4 and mapred.reduce.tasks = 4

Node 4: mapred.map.tasks = 1 and mapred.reduce.tasks = 1

假设您为该集群中的4个节点设置了上述参数。如果您注意到节点2分别只设置了2和2,因为节点2的处理资源可能较少,例如(2个处理器,2个内核),而节点4甚至分别设置为分别低到1和1,可能是由于处理资源该节点上有1个处理器,2个内核,因此不能运行超过1个mapper和1个reducer任务。


因此,当您运行作业时,将节点1,节点2,节点3,节点4配置为运行最大作业。在作业需要完成的42个映射器任务中,总共(4 + 2 + 4 + 1)11个映射器任务同时进行。每个节点完成其映射任务后,它将处理42个映射器任务中剩余的其余映射器任务。


现在开始使用reducers,因为将mapred.reduce.tasks设置为0,所以我们仅将mapper输出输出到42个文件中(每个mapper任务1个文件),而没有reducer输出。


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 584 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信