Hadoop / map-reduce:占用插槽中所有地图花费的总时间与所有地图任务花费的总时间

时间:2015-03-04 18:02:53

标签: apache hadoop amazon-web-services

背景:我正在分析AWS Hadoop作业在各种群集配置上的性能,而且一些Hadoop计数器令人困惑。

问题:"所有地图在占用时段中占用的总时间"和"所有地图任务花费的总时间"? (同样的问题,减少)。为简洁起见,我们将这些计数器称为mapO,mapT,redO和redT。以下是我在三种不同配置中看到的内容(每种配置都有不同数量的核心/从属节点):

1)对于AWS / EMR作业(Hadoop 2.4.0-amzn-3),mapO / mapT的比率始终为6.0,redO / redT的比率始终为12.0。

2)对于使用实例存储手动安装的Hadoop(Hadoop 2.4.0.2.1.5.0-695),mapO / mapT的比率始终为1.0,但redO / redT的比率有时为1.0,有时为2.0。

3)对于使用EBS存储手动安装的Hadoop,mapO / mapT的比率始终为1.0,redO / redT的比率始终为2.0。

我假设其他配置会有不同的比率,但这些计数器/计时器实际测量的是什么?

我买了汤姆怀特的优秀" Hadoop"书(第3版),但没有提及mapO或redO专柜或"占用的插槽"一般来说。

我还在hadoop.apache.com上运行了大量的Google搜索并查看了数十页。我也在我的MacBook上(和运行)hadoop并搜索了这些计数器的代码并且找不到它(我确定它在那里但是??)。

正如一个相关(并且没有答案)的问题所指出的,即使对这些基本计数器的基本描述也不容易获得,这是令人惊讶和奇怪的。

1 个答案:

答案 0 :(得分:5)

在代码中,“占用的插槽中所有映射所花费的总时间(ms)”由JobCounter.java中的枚举SLOTS_MILLIS_MAPS(或SLOTS_MILLIS_REDUCES)表示。这些常量已被弃用。他们通过将任务持续时间乘以用于地图任务的MB与一个纱槽所需的最小MB的比率来获得他们的数字。

因此,如果您的地图任务使用4 MB且最小插槽大小为1 MB,那么您的任务需要4 *的时间,可用于其他任务。这可以解释为什么你会看到不同设置的不同比率。我没有发现该指标特别有用(特别是因为如果不深入研究代码,它甚至不清楚它是什么意思)。