사용자 정의 옵션(Tool, ToolRunner)
하둡은
맵리듀스 프로그램 개발을 편리하게 할수 있도록 다양한 helper class를 제공.
ex) org.apache.hadoop.util package에 구현돼 있음.
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
맵-리듀스 잡을 실행하면
잡 객체는 사용자가 설정한 Configuration객체를 이용해 org.apache.hadoop.mapred.JobConf 객체를 생성.
JobConf는 하둡의 환경설정 파일과 하둡 명령어에서 입력한 파라미터를 참조해 모든 태스크에 이 정보를 제공.
분석 데이터의 종류에 따라 하둡 환경설정 정보와 다른 값을 사용해야 하는 경우가 있을 것입니다.
이런 불편함을 줄이기 위해 GenericOptionsParser, Tool, ToolRunner 등을 제공.
이 클래스를 이용해 job을 실행할 때 환경설정 정보를 확인하고, 잡 드라이버 클래스에서 환경설정 정보를 수정.
<< Tool >>
GenericOptionsParser의 콘솔 설정 옵션을 지원하기 위한 인터페이스.
Configuration 클래스를 상속 받으며, 내부적으로 run 메서드가 정의돼 있음.
ex)
|
<< ToolRunner >>
A utility to help run Tool
s.
org.apache.hadoop.util
Class ToolRunner
java.lang.Object org.apache.hadoop.util.ToolRunner
run 호출 시! ret = ToolRunner.run(runner,args);
1) ToolRunner.class 발동!
public static int run(Tool tool, String[] args) throws Exception {
return run(tool.getConf(), tool, args);
}
2) Configuration, Tool, args를 파라미터로 넘겨주며, 안에서는 GenericOptionsParser를 사용!
또한 tool에 있는 run을 실행시켜 준다.
public static int run(Configuration conf, Tool tool, String[] args) throws Exception {
if(conf == null) {
conf = new Configuration();
}
GenericOptionsParser parser = new GenericOptionsParser(conf, args);
tool.setConf(conf);
String[] toolArgs = parser.getRemainingArgs();
return tool.run(toolArgs);
}
만약 Tool, ToolRunner를 사용하지 않고 GenericOptionsParser를 사용할 수도 있음.
1) argument 내용
2) 소스
/**
* Created by terry.park on 2014. 12. 8..
*/
public class AceTest {
public static void main(String[] args) {
Configuration conf = new Configuration();
try {
GenericOptionsParser parser = new GenericOptionsParser(conf, args);
String[] remainingArgs = parser.getRemainingArgs();
for(int i = 0; i < remainingArgs.length; i++) {
System.out.println("["+i+"]=>"+remainingArgs[i]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3) Result
[0]=>hadoop
[1]=>ConfigurationPrinter
[2]=>-D
[3]=>name=acet
[4]=>|
[5]=>grep
[6]=>company=daumkakao
하지만 더욱 더 편리하게 helper 클래스를 사용하면 된다는 것이다.
단, 사용하려면 extends Configured implements Tool 를 해줘야 한다.
이제 신나는 mr로 고고씽~
- 끝 -