- 맵리듀스 튜닝
- 맵 측면에서 튜닝 속성
- 다수의 디스크 스필을 피하는 것(하나가 최선)이 최고의 성능을 내는 방법임
- Map 출력 크기를 측정할 수 있다면 mapreduce.task.io.sort.* 속성을 적절히 설정하여 스필 횟수의 최소화 가능
- 리듀스 측면에서 튜닝 속성
- 중간 데이터 전체가 메모리에 존재할 때 최고의 성능을 얻을 수 있음
- 기본적으로 Reduce 함수에 모든 메모리를 예약함
- 카운터
- Job에 대한 통계 정보를 수집하는 유용한 채널
- 태스크 카운터
- 각 Task가 실행될 때 해당 Task에 대한 정보를 수집한 후 Job의 모든 Task에 대한 값을 취합하여 최종 결과를 알려줌
- 사용자 정의 카운터
- 그룹과 카운터 이름으로 increment()를 수행하여 조건에 대한 카운트 수행
- ex) reporter.icreCounter(“com.philippeadjiman.~~~”, “ALL”, 1);
- 정렬
- 부분 정렬
- 기본적인 예는 IntWritable 키로 시퀀스 파일을 정렬하는 방법으로 Reducer의 수에 따라 Comparator로 정렬된 출력 파일을 생성하며, 각 파일에서 정렬됨
- 전체 정렬
- 전체 순서를 고려한 균등 분포의 크기를 가지는 파티셔너를 이용
- 균등한 분포를 구하기 위해 샘플링을 수행하고 파티셔너의 각 범위를 설정
- SplitSampler: 스플릿 전체에서 처음 n개의 레코드만 추출함
- IntervalSampler: 스플릿에서 일정한 간격으로 키를 추출함
- RandomSampler: 가장 범용적인 샘플러
- Lazy Persist policy
- HDFS에 데이터를 저장할 때, Disk I/O와 Checksum 검증과 같이 자원을 소모하는 처리를 비동기로 처리하기 위해 RamFS을 이용함
- Datanode 설정 시 다음과 같은 [RAM_DISK] 태그를 추가함
- QJM (Quorum Journal Manager)
- Zookeeper를 중심으로 Namenode를 Active/Standby로 구성함에 따라 HA를 제공할 수 있는 방법
- Zookeeper는 Namenode의 상태 모니터링으로 장애 시 Standby Namenode가 Active로 작동할 수 있도록 함
- Journal Node는 Fail Over에 대비하여 Namenode의 Edit 로그를 공유하고 동기화함
'Development > Hadoop' 카테고리의 다른 글
하둡 공부 - 하둡 관리 (0) | 2019.01.24 |
---|---|
하둡 공부 - 하둡 클러스터 설치 및 고려사항 (0) | 2019.01.24 |
하둡 공부 - MapReduce 실행 (0) | 2019.01.24 |
하둡 공부 - MapReduce 작동 방법 (0) | 2019.01.24 |
하둡 공부 - Hadoop I/O (0) | 2019.01.24 |