管理大型map / reduce应用程序中的计数器

时间:2011-12-22 19:48:52

标签: java hadoop mapreduce

我有几个类似的map / reduce作业,它们具有不同的计数器名称和不同的getCounter()约定。

  1. 是否有一种有效的,惯用的hadoop方式来管理 在大型地图/减少应用中统一使用计数器记录?

  2. 我认为不同的map / reduce作业可以创建自己的计数器,这有点吓人。有没有办法可以禁用它,以便所有计数器都必须从一个资源创建?我认为这会提高我的一些班级的输出质量。

  3. 任何其他分析或管理应用程序中所有计数器的技术都将受到赞赏......

1 个答案:

答案 0 :(得分:4)

以下代码位于Counters.java。请注意,此代码位于20.203,20.204和20.205(现在称为1.0)版本中。另请注意,某些参数是可配置的,有些则不是。

/** limit on the size of the name of the group **/
private static final int GROUP_NAME_LIMIT = 128;
/** limit on the size of the counter name **/
private static final int COUNTER_NAME_LIMIT = 64;

private static final JobConf conf = new JobConf();
/** limit on counters **/
public static int MAX_COUNTER_LIMIT = 
conf.getInt("mapreduce.job.counters.limit", 120);

/** the max groups allowed **/
static final int MAX_GROUP_LIMIT = 50;

在trunk和0.23版本中,MRJobConfig.java中有以下代码。请注意,参数是可配置的。

public static final String COUNTERS_MAX_KEY = "mapreduce.job.counters.max";
public static final int COUNTERS_MAX_DEFAULT = 120;

public static final String COUNTER_GROUP_NAME_MAX_KEY = "mapreduce.job.counters.group.name.max";
public static final int COUNTER_GROUP_NAME_MAX_DEFAULT = 128;

public static final String COUNTER_NAME_MAX_KEY = "mapreduce.job.counters.counter.name.max";
public static final int COUNTER_NAME_MAX_DEFAULT = 64;

public static final String COUNTER_GROUPS_MAX_KEY = "mapreduce.job.counters.groups.max";
public static final int COUNTER_GROUPS_MAX_DEFAULT = 50;

您可能对MAPREDUCE-3520和此mail感兴趣。我打算在MAPREDUCE-3520上工作,但没有时间:)

相关问题