impala 퍼포먼스 개선을 위한 research
TRANSCRIPT
Impala 퍼포먼스 개선
Simplex Internet / Research Institute / Jeong, Ki-Chul
2013. 4. 10
권장되는 하드웨어 사양
CPU
• Intel - Nehalem (2008년 발매) 이후 모델
• AMD - Bulldozer (2011년 발매) 이후 모델
• 오래된 CPU에서도 동작하지만...
• SSE4.2 Instruction set 사용
Memory
• 32기가 이상
Storage
• 10개 이상의 디스크
• I/O 속도가 중요한 경우도 있음
• 데이터 보관을 위한 충분한 디스크 공간
IMPALA 설정하기
Short-Circuit Reads
• 파일시스템으로부터 로컬데이터를 직접 읽
을 수 있게 허용
• 복사본의 수를 최소화
Block Location Tracking
• 어떤 디스크 데이터 블록들이 어디에 위
치 되었는지 알 수 있도록
• 디스크들을 더 잘 활용할 수 있도록
Native Checksumming
• 최적화 된 native check-summing library를
사용
Cloudera Manager를 통해 설치하면 기본으로 설정됨
Short-Circuit Reads
Block Location Tracking
Native Checksumming
IMPALA 퍼포먼스 테스트
Impala 설정 값 체크
웹 UI를 이용해서 체크
http://<hostname>:<port>/varz
기본 포트 : 25000
block locality tracking 정보
를 사용하는 것
Data locality 체크
쿼리 실행 로그 확인
SimpleScheduler locality가
100%보다 작다면 impalad가
동작되지 않는 노드가 있는 것
IMPALA 로그
Log Message Interpretation
Unknown disk id. This will negatively affect performance.
Check your hdfs settings to enable block location metadataTracking block locality가 활성화 되지 않은 상태이다.
Unable to load native-hadoop library for your platform...
using builtin-java classes where applicableNative check-summing이 활성화 되
쿼리를 실행했을 때 앞에서 설명한 설정이 되어있지 않을 경우 나타
나는 로그 메세지
퍼포먼스 관련 FAQ
Impala는 캐싱을 사용하는지?
• 데이터 캐싱을 하지 않지만 메타데이터는
캐싱함
• 두번째 실행된 쿼리가 빠르지만 이는 OS
버퍼 캐시에 데이터셋이 캐시되었기 때문
Impala의 aggregation 전략
• 오직 in-memory hash aggregation
호스트를 늘리면 퍼포먼스에 도움이
되는지?
• 된다.
• 호스트의 숫자를 통해 규모를 늘림(?)
퍼포먼스 향상 방법은? (개발당시)
• 맵리듀스의 비효율적인 요소 사용을 자제
• 최신 하드웨어 기술의 이점을 활용한 효율
적인 실행엔진 사용
결론
• Cloudera Manager를 통해 설치하면 설정
을 통한 튜닝포인트가 없다.
오히려 설정 변경 시 데몬 시작이 불가함
• 퍼포먼스 개선은 파티션 또는 테이블 구조
를 최적화(Index는 지원 안 함)
돈은 거짓말을 하지 않는다!!!
성능은 하드웨어 사양과 호스트 개수에 비례
Reference
• Installing and Using Cloudera Impala
• Impala Frequently Asked Questions
Thanks!!!