23. 클러스터에서 동작하기
로컬에서는 단일 JVM에서 Job이 수행되고,
모든 클래스가 클래스 패스에 있으므로, 잘 동작함.
분산설정에서는,
Job 클래스는 JAR 파일로 패킹되어
클러스터로 전송해야 함.
setJarByClass() 메소드에서 클래스 셋을 포함하는 드라이버
의 클래스패스에서 JAR파일을 검색하므로서 하둡은 job
JAR를 찾는다.
13년 8월 11일 일
24. Ant 또는 Maven 같은 빌드툴을 이용해서 JAR 파일을 생성.
% mvn package -DskipTests
JAR 에 하나의 job이 있다면, JAR 파일 manifest에서 main
클래스가 수행되도록 해야 함.
main 클래스가 manifest에 존재하지 않으면, 커맨드라인에
지정해야 함.
13년 8월 11일 일
25. 임의의 종속적인 JAR 파일은 job JAR 파일안에 lib 서브디
렉토리에 패킹될 수 있음.
리소스 파일은 classes 서브디렉토리에 패킹됨.
13년 8월 11일 일
26. JOB 개선하기
성능 개선을 위해서
프로파일하거나 옵티마이즈하기전에 확인해야 할
체크리스트
Mapper의 수 작은 수의 Mapper로 오래 수행되도록
Reducers의 수 Reduce Slot의 수보다 작게 Reducers 를 유지
Combiners
데이터 전송을 줄이기 위해
Combiner를 이용할 수 있는 지 검사
Custom
serialization
Writable 또는 comparator를 커스터마이징했다면,
RawComparator를 구현할 것.
Shuffle tweaks
MapReduce Shuffle에서
메모리 관련 성능을 증가시킬수 있다.
13년 8월 11일 일
27. 태스크 프로파일링
로컬 Job에 속한 태스크를 프로파일링 하는 것이 쉽다.
다만 로컬과 클러스터는
동작 방식의 차이가 있으므로 주의해야 함.
HPROF Profiler
13년 8월 11일 일