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输出。
添加回答
举报