我有几个类似的map / reduce作业,它们具有不同的计数器名称和不同的getCounter()
约定。
是否有一种有效的,惯用的hadoop方式来管理 在大型地图/减少应用中统一使用计数器记录?
我认为不同的map / reduce作业可以创建自己的计数器,这有点吓人。有没有办法可以禁用它,以便所有计数器都必须从一个资源创建?我认为这会提高我的一些班级的输出质量。
任何其他分析或管理应用程序中所有计数器的技术都将受到赞赏......
答案 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上工作,但没有时间:)