hadoop ch5

27
DEVELOPING A MAPREDUCE APPLICATION CHAPTER 5 13년 8월 11일 일

Upload: allting-kim

Post on 23-Jun-2015

254 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Hadoop ch5

DEVELOPING A MAPREDUCE APPLICATION

CHAPTER 5

13년 8월 11일 일

Page 2: Hadoop ch5

13년 8월 11일 일

Page 3: Hadoop ch5

13년 8월 11일 일

Page 4: Hadoop ch5

13년 8월 11일 일

Page 5: Hadoop ch5

13년 8월 11일 일

Page 6: Hadoop ch5

설정 가능 API

하둡 컴포넌트는 설정 API를 통하여 설정 가능함.

Configuration 클래스는 속성과 값의 집합.

각 속성은 String 이며, 값은 여러 타입이 올 수 있음.

13년 8월 11일 일

Page 7: Hadoop ch5

리소스 결합하기

13년 8월 11일 일

Page 8: Hadoop ch5

다양한 확장

설정은 시스템 속성 및 다른 속성들에 의해 정의될 수 있다.

13년 8월 11일 일

Page 9: Hadoop ch5

개발 환경 설정 - POM

Maven POM을 통한 의존성 설정.

hadoop-core

hamcrest-all

mrunit

13년 8월 11일 일

Page 10: Hadoop ch5

설정 관리

하둡 개발시 로컬(pseudodistributed), 클러스터를 변경하면 진행.

설정 파일을 하둡 설치 디렉토리 외부에 두고,하둡버전간 변환하여 사용.

13년 8월 11일 일

Page 11: Hadoop ch5

설정 파일

hadoop-local.xml - Filesystem과 Jobtracker 용 디폴트 설정.

hadoop-localhost.xml - 로컬에서 네임노드와 잡트랙커 설정.

hadoop-cluster.xml- 클러스터내 네임노드와 잡트래커 설정.

13년 8월 11일 일

Page 12: Hadoop ch5

전역은 $HADOOP_INSTALL 설정.

Standalone or pseudodistributed

13년 8월 11일 일

Page 13: Hadoop ch5

HELPER 클래스

GenericOptionsParser- 커맨드라인 해석과 Configuration 설정에 사용.- Tool, ToolRunner를 사용할 것.

Tool, ToolRunner-

13년 8월 11일 일

Page 14: Hadoop ch5

MRUNIT

13년 8월 11일 일

Page 15: Hadoop ch5

13년 8월 11일 일

Page 16: Hadoop ch5

REDUCER

13년 8월 11일 일

Page 17: Hadoop ch5

로컬에서 수행하기

13년 8월 11일 일

Page 18: Hadoop ch5

13년 8월 11일 일

Page 19: Hadoop ch5

13년 8월 11일 일

Page 20: Hadoop ch5

로컬에서 JOB 수행하기

13년 8월 11일 일

Page 21: Hadoop ch5

13년 8월 11일 일

Page 22: Hadoop ch5

13년 8월 11일 일

Page 23: Hadoop ch5

클러스터에서 동작하기

로컬에서는 단일 JVM에서 Job이 수행되고,모든 클래스가 클래스 패스에 있으므로, 잘 동작함.

분산설정에서는, Job 클래스는 JAR 파일로 패킹되어 클러스터로 전송해야 함.

setJarByClass() 메소드에서 클래스 셋을 포함하는 드라이버의 클래스패스에서 JAR파일을 검색하므로서 하둡은 job JAR를 찾는다.

13년 8월 11일 일

Page 24: Hadoop ch5

Ant 또는 Maven 같은 빌드툴을 이용해서 JAR 파일을 생성.

% mvn package -DskipTests

JAR 에 하나의 job이 있다면, JAR 파일 manifest에서 main 클래스가 수행되도록 해야 함.

main 클래스가 manifest에 존재하지 않으면, 커맨드라인에 지정해야 함.

13년 8월 11일 일

Page 25: Hadoop ch5

임의의 종속적인 JAR 파일은 job JAR 파일안에 lib 서브디렉토리에 패킹될 수 있음.

리소스 파일은 classes 서브디렉토리에 패킹됨.

13년 8월 11일 일

Page 26: Hadoop ch5

JOB 개선하기성능 개선을 위해서 프로파일하거나 옵티마이즈하기전에 확인해야 할 체크리스트

Mapper의 수 작은 수의 Mapper로 오래 수행되도록

Reducers의 수 Reduce Slot의 수보다 작게 Reducers 를 유지

Combiners 데이터 전송을 줄이기 위해 Combiner를 이용할 수 있는 지 검사

Custom serialization

Writable 또는 comparator를 커스터마이징했다면,RawComparator를 구현할 것.

Shuffle tweaks MapReduce Shuffle에서 메모리 관련 성능을 증가시킬수 있다.

13년 8월 11일 일

Page 27: Hadoop ch5

태스크 프로파일링

로컬 Job에 속한 태스크를 프로파일링 하는 것이 쉽다.

다만 로컬과 클러스터는 동작 방식의 차이가 있으므로 주의해야 함.

HPROF Profiler

13년 8월 11일 일