2017-04-26 84 views
1

假设hadoop系统中的节点有8GB内存可用。了解Hadoop中map和reduce任务的数量MapReduce

如果任务跟踪器和数据节点消耗2GB,并且每个任务所需的内存为200MB,那么可以开始多少个map和reduce?

8-2 = 6GB

所以,6144MB/200MB = 30.72

所以,30总Map和Reduce任务将开始。

我是对的还是我错过了什么?

回答

1

映射器和缩减器的数量不是由可用资源决定的。您必须通过调用setNumReduceTasks()来设置代码中的缩减器数量。

对于映射器的数量,它更复杂,因为它们是由Hadoop设置的。默认情况下,每个输入分割大致有一个地图任务。您可以通过更改默认块大小,记录读取器,输入文件数量来调整。

您还应该在hadoop配置文件中设置最大数量的map任务,并减少并发运行的任务以及分配给每个任务的内存。最后两种配置是基于可用资源的配置。请记住,map和reduce任务在CPU上运行,因此实际上受限于可用内核的数量(一个内核不能同时运行两个任务)。

This guide可能会帮助你更多的细节。

+0

谢谢!但是,考虑到上述资源量,我们是否可以找出可以使用给定资源运行的最大地图数量和减少任务数量? – user5155835

+0

@ user5155835我不认为有一种(简单)的方式来以编程方式找到它。你的想法几乎是正确的,但你也必须考虑可用的内核数量。 – vefthym

+0

不是以编程方式,而是在理论上,与给定的资源? – user5155835