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

我目前正在从事一项工作,我将地图任务的数量固定为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_0164

11/07/30 19:48:56 INFO mapred.JobClient: Counters: 18

11/07/30 19:48:56 INFO mapred.JobClient:   Job Counters 

11/07/30 19:48:56 INFO mapred.JobClient:     Launched reduce tasks=13

11/07/30 19:48:56 INFO mapred.JobClient:     Rack-local map tasks=12

11/07/30 19:48:56 INFO mapred.JobClient:     Launched map tasks=24

11/07/30 19:48:56 INFO mapred.JobClient:     Data-local map tasks=12

11/07/30 19:48:56 INFO mapred.JobClient:   FileSystemCounters

11/07/30 19:48:56 INFO mapred.JobClient:     FILE_BYTES_READ=4020792636

11/07/30 19:48:56 INFO mapred.JobClient:     HDFS_BYTES_READ=1556534680

11/07/30 19:48:56 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=6026699058

11/07/30 19:48:56 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=1928893942

11/07/30 19:48:56 INFO mapred.JobClient:   Map-Reduce Framework

11/07/30 19:48:56 INFO mapred.JobClient:     Reduce input groups=40000000

11/07/30 19:48:56 INFO mapred.JobClient:     Combine output records=0

11/07/30 19:48:56 INFO mapred.JobClient:     Map input records=40000000

11/07/30 19:48:56 INFO mapred.JobClient:     Reduce shuffle bytes=1974162269

11/07/30 19:48:56 INFO mapred.JobClient:     Reduce output records=40000000

11/07/30 19:48:56 INFO mapred.JobClient:     Spilled Records=120000000

11/07/30 19:48:56 INFO mapred.JobClient:     Map output bytes=1928893942

11/07/30 19:48:56 INFO mapred.JobClient:     Combine input records=0

11/07/30 19:48:56 INFO mapred.JobClient:     Map output records=40000000

11/07/30 19:48:56 INFO mapred.JobClient:     Reduce input records=40000000

[hcrc1425n30]s0907855: 


紫衣仙女
浏览 587回答 3
3回答

收到一只叮咚

举例说明:假设您的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 = 4Node 2: mapred.map.tasks = 2 and mapred.reduce.tasks = 2Node 3: mapred.map.tasks = 4 and mapred.reduce.tasks = 4Node 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输出。
打开App,查看更多内容
随时随地看视频慕课网APP