背景:我正在分析aws hadoop作业在各种集群配置上的性能,一些hadoop计数器令人困惑。
问:“所有Map在占用的插槽中花费的总时间”和“所有Map任务花费的总时间”之间有什么区别(同样的问题。为简洁起见,我们将这些计数器称为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。
我假设其他配置会有不同的比率,但这些计数器/计时器实际测量的是什么?
我买了tom white的优秀的“hadoop”书(第三版),但是没有特别提到mapo或重做计数器,也没有提到“占用的插槽”。
我也在hadoop.apache.com上运行了很多google搜索,查看了几十个页面。我也有(并运行)hadoop在我的macbook和搜索这些计数器的代码,但找不到它(我相信它在那里,但??)。
正如在一个相关的(未回答的)问题中所指出的,令人惊讶和奇怪的是,即使是这些基本计数器的基本描述也不容易获得。
1条答案
按热度按时间34gzjxbg1#
在代码中,“所有Map在已占用插槽中花费的总时间(ms)”由jobcounter.java中的枚举插槽\u millis\uMap(或插槽\u millis\u reduces)表示。这些常量已弃用。他们通过将任务持续时间乘以map任务所用的mb与一个Yarn槽所需的最小mb之比来获得数字。
因此,如果map任务使用4 mb,并且最小插槽大小为1 mb,那么您的任务所用的时间是其他任务所用时间的4倍。这就解释了为什么不同的设置会有不同的比率。我并不觉得这个指标特别有用(尤其是在不深入研究代码的情况下还不清楚它意味着什么)。