

맵리듀스는 코드 수준에서 카운터의 집합을 정의하게 해주며 매퍼와 리듀서에서 원하는 방식으로 증가하게 할 수 있다.
카운터는 연관된 카운터를 묶어 주는 자바 enum에 의해 정의.
잡은 임의의 숫자의 enum을 정의할 수 있고 각 enum은 임의의 필드 개수를 갖는다.
enum의 이름이 그룹명이며 enum의 필드는 카운터명.
카운터는 전역.
맵리듀스 프레임워크는 잡이 끝나는 시점에 총계를 구하기 위해 모든 맵과 리듀스로부터 카운터를 수집.
예제 코드 p.312~313 참조
public void incrCounter(String group, String counter, long amount)reporter: counter:group.counter.amountp.319~320 소스는 IntWritable키를 가지고 시퀀스 파일을 정렬하는 일종의 변형된 맵리듀스 잡.
기본 HashPartitioner를 사용하여 IntWritable 키를 가지고 SequenceFile 을 정렬하는 맵리듀스 프로그램.
30개의 리듀서를 사용해서 이 프로그램을 실행할 경우 30개의 출력 파일을 만들어 내며 각 파일은 정렬되어 있다.
Reader[] readers = MapFileOutputFormat.getReaders(fs, path, getConf());
Writable entry = MapFileOutputFormat.getEntry(readers, partitioner, key, val);
Reader reader = readers[partitioner.getPartition(key, val, readers.length)];
