- Chain
하둡은 하나의 랩리듀스 잡에서 여러 개의 매퍼와 리듀서를 실행할 수 있게 체인매퍼(ChainMapper)
와 제인리듀서 (ChainReduce애를 제공한다. 두 클래스는 체인 방식으로 매퍼와 리듀서를 호출하게
된다. 체인매퍼의 경우 첫 번째 매퍼를 실행한 후 그 출력을 두 번째 매퍼의 입력 파라미터로 전달하
고, 두번째 매퍼의 출력은 그 다음 순서의 매퍼의 입력으로 전달된다. 이렇게 순차 적으로 매퍼가 실행
되다가 마지막에 있는 매퍼의 출력이 매퍼의 최종 출력 데이터가 된다. 체인리듀서도 위와같은 방식으
로 출력 데이터가 만들어진다.
예)
Configuration conf = new Configuration();
//MapReduce job 이름 설정
conf.setJobName("chain");
//입출력 데이터 포뱃 설정
conf.setlnputFormat(TextlnputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);
//첫 번째 Mapper 설정
JobConf mapAConf = new JobConf(false);
ChainMapper.addMapper(conf AMap.class, LongWritable.class Text.class,
Text.class, Text.class, true, mapAConf);
//두 번째 Mapper 설정
JobConf mapBConf = new JobConf(false);
ChainMapper.addMapper(conf BMap.class, Text.class, Text.class,
LongWritable.class, Text.class, false, mapBConf);
//Reducer 설정
JobConf reduceConf = new JobConf(false);
ChainReducer.setReducer(conf, XReduce.class, LongWritable.class, Text.class,
Text.class, Text.class, true, reduceConf);
//세 번째 Mapper 설정(리듀서 실행 후 실행됨)
ChainReducer.addMapper(conf, CMap.class, Text.class, Text.class,
LongWritable.class, Text.class, false, null);
//네 번째 Mapper 설정
ChainReducer.addMapper(conf, DMap.class, LongWritable.class, Text.class,
LongWritable.class, LongWritable.class, true, null);
FilelnputFormat.setlnputPaths(conf, inDir);
FileOutputFormat.setOutputPath(conf, outDir);
JobClient jc = new JobClient(conf);
RunningJob job = jc.submitJob(conf);
'Hadoop' 카테고리의 다른 글
Hadoop OutputCollector (0) | 2014.06.27 |
---|---|
Hadoop setPartitionerClass & setGroupingComparatorClass (0) | 2014.06.16 |
Hadoop Output Format (0) | 2014.06.13 |
Reducer (0) | 2014.06.09 |
Partitioner (0) | 2014.06.09 |