AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

MapReduce part3

1. 计数器

1.1 产生的原因

  • 由于MapReduce程序在运行时会产生多个Mapper和Reducer线程并发执行,所以如果想进行全局的计数统计,无法实现

  • 每个线程都会单独进行自己的计数操作,最终无法拿到汇总好的所有线程的统计结果

1.2 MR提供了Counter机制

  • Counter可以通过在MR任务中设置计数器的名称和计数器的累加操作来完成,分布式计算中全局的计数

1.3 计数器的使用

  1. 创建计数器对象
// 使用字符串方式传入组名和计数器名
Counter counter1 = context.getCounter("MyGroup", "ip start with 1");

// 使用枚举类型创建计数器
// 组名是枚举类型的类的引用,计数器名是枚举值
Counter counter2 = context.getCounter(MyCounters.IP_START_WITH_1);
  1. 使用计数器进行自增操作
// 使用计数器调用increment()对其值进行自增
// 参数是long类型除了+1计数操作,还可以进行一些累加计算
counter1.increment(1);
counter2.increment(88);

2. join操作