DEVELOPING A MAPREDUCE APPLICATION
CHAPTER 5
13년 8월 11일 일
13년 8월 11일 일
13년 8월 11일 일
13년 8월 11일 일
13년 8월 11일 일
설정 가능 API
하둡 컴포넌트는 설정 API를 통하여 설정 가능함.
Configuration 클래스는 속성과 값의 집합.
각 속성은 String 이며, 값은 여러 타입이 올 수 있음.
13년 8월 11일 일
리소스 결합하기
13년 8월 11일 일
다양한 확장
설정은 시스템 속성 및 다른 속성들에 의해 정의될 수 있다.
13년 8월 11일 일
개발 환경 설정 - POM
Maven POM을 통한 의존성 설정.
hadoop-core
hamcrest-all
mrunit
13년 8월 11일 일
설정 관리
하둡 개발시 로컬(pseudodistributed), 클러스터를 변경하면 진행.
설정 파일을 하둡 설치 디렉토리 외부에 두고,하둡버전간 변환하여 사용.
13년 8월 11일 일
설정 파일
hadoop-local.xml - Filesystem과 Jobtracker 용 디폴트 설정.
hadoop-localhost.xml - 로컬에서 네임노드와 잡트랙커 설정.
hadoop-cluster.xml- 클러스터내 네임노드와 잡트래커 설정.
13년 8월 11일 일
전역은 $HADOOP_INSTALL 설정.
Standalone or pseudodistributed
13년 8월 11일 일
HELPER 클래스
GenericOptionsParser- 커맨드라인 해석과 Configuration 설정에 사용.- Tool, ToolRunner를 사용할 것.
Tool, ToolRunner-
13년 8월 11일 일
MRUNIT
13년 8월 11일 일
13년 8월 11일 일
REDUCER
13년 8월 11일 일
로컬에서 수행하기
13년 8월 11일 일
13년 8월 11일 일
13년 8월 11일 일
로컬에서 JOB 수행하기
13년 8월 11일 일
13년 8월 11일 일
13년 8월 11일 일
클러스터에서 동작하기
로컬에서는 단일 JVM에서 Job이 수행되고,모든 클래스가 클래스 패스에 있으므로, 잘 동작함.
분산설정에서는, Job 클래스는 JAR 파일로 패킹되어 클러스터로 전송해야 함.
setJarByClass() 메소드에서 클래스 셋을 포함하는 드라이버의 클래스패스에서 JAR파일을 검색하므로서 하둡은 job JAR를 찾는다.
13년 8월 11일 일
Ant 또는 Maven 같은 빌드툴을 이용해서 JAR 파일을 생성.
% mvn package -DskipTests
JAR 에 하나의 job이 있다면, JAR 파일 manifest에서 main 클래스가 수행되도록 해야 함.
main 클래스가 manifest에 존재하지 않으면, 커맨드라인에 지정해야 함.
13년 8월 11일 일
임의의 종속적인 JAR 파일은 job JAR 파일안에 lib 서브디렉토리에 패킹될 수 있음.
리소스 파일은 classes 서브디렉토리에 패킹됨.
13년 8월 11일 일
JOB 개선하기성능 개선을 위해서 프로파일하거나 옵티마이즈하기전에 확인해야 할 체크리스트
Mapper의 수 작은 수의 Mapper로 오래 수행되도록
Reducers의 수 Reduce Slot의 수보다 작게 Reducers 를 유지
Combiners 데이터 전송을 줄이기 위해 Combiner를 이용할 수 있는 지 검사
Custom serialization
Writable 또는 comparator를 커스터마이징했다면,RawComparator를 구현할 것.
Shuffle tweaks MapReduce Shuffle에서 메모리 관련 성능을 증가시킬수 있다.
13년 8월 11일 일
태스크 프로파일링
로컬 Job에 속한 태스크를 프로파일링 하는 것이 쉽다.
다만 로컬과 클러스터는 동작 방식의 차이가 있으므로 주의해야 함.
HPROF Profiler
13년 8월 11일 일