VPC 환경에서 이용 가능합니다.
Impala는 대규모 병렬 처리 엔진으로서, 저장된 데이터를 인터랙티브 SQL을 이용해 실시간으로 분석할 수 있는 시스템입니다. Hadoop HDFS뿐만 아니라 HBase, Kudu 등 다양한 저장소로부터 데이터를 읽어올 수 있으며, Hive, Hue 등과 연계하여 사용할 수 있습니다. 따로 전용 메타스토어를 사용할 필요 없이 기존 Hive 메타스토어를 사용합니다.
Impala는 Hive가 가지고 있는 실시간성 Query 성능 문제와 멀티 사용자 지원을 해결하기 위해 등장했습니다. Hive, Pig는 Map-Reduce 프레임워크를 통해 쿼리를 처리하는 반면 Impala는 자체 분산 쿼리 엔진을 사용하기 때문에 응답 속도가 가장 빠른 편에 속합니다.
Impala는 단일 명령문에 대한 Transaction을 지원하지만 다중 명령문에 대한 Transaction은 지원하지 않습니다.
Impala 구성 요소
Impala 서비스를 구성하는 컴포넌트는 크게 세 가지로 Impala Daemon, StateStore, Catalog Service가 있습니다.
| 컴포넌트 | 설명 |
|---|---|
| Impala Daemon(Impalad) |
|
| Impala StateStore(StateStored) |
|
| Impala Catalog(Catalogd) |
|
쿼리 실행 과정
쿼리 실행 과정은 다음과 같습니다.
- 사용자는 클러스터 내 특정 Impalad에서 Impala shell, ODBC 등을 이용하여 쿼리를 수행
- Impalad는 Hive metastore에서 테이블 스키마를 가져와 질의문의 적합성을 판단하고, HDFS 네임노드에서 질의 수행에 필요한 데이터 블록과 각각의 위치 정보 수집
- 최근 업데이트된 Impala 메타데이터를 기반으로 클러스터 내 모든 Impalad에게 질의 수행에 필요한 정보들을 전파
- 질의와 메타데이터를 전달받은 모든 Impalad는 각자 처리할 데이터 블록을 로컬 디렉터리에서 읽어와 질의 처리를 수행
- 모든 Impalad에서 작업이 완료되면 사용자로부터 질의를 받았던 Impalad는 결과를 취합해 사용자에게 전달

Impala 사용
Impala를 사용하는 방법을 설명합니다.
클러스터 생성
네이버 클라우드 플랫폼 콘솔에서 Cloud Hadoop 클러스터를 생성해 주십시오. 클러스터 생성에 대한 자세한 내용은 클러스터 생성을 참조해 주십시오.
Ambari UI에서 Impala 서비스 설치
Ambari UI에서 Add service로 Impala를 설치할 수 있습니다.
설치 시 작성할 옵션은 다음과 같습니다.
Advanced impala-env
| 설정 항목 | 값 |
|---|---|
statestore_host |
Impala_statestore_설치_FQDN |
catalog_host |
Impala_catalog_설치_FQDN |
java_shared_lib_dir |
/usr/jdk64/jdk1.8.0_192/jre/lib/amd64/server |
Ambari UI에서 Impala 서비스 확인
다음과 같이 Impala 서비스를 확인할 수 있습니다. 이 페이지에서 서비스의 각 컴포넌트를 시작, 중지할 수 있습니다.

- Summary: 컴포넌트가 설치된 호스트 확인
- Configs: Impala 서비스의 configuration 변경
- Quick Links: Impala Statestore WEB-UI, Impala Catalog WEB-UI, Impala Server WEB-UI
- 이 링크를 통해서 접속하려면 터널링이 필요합니다. 콘솔에서 제공하는 Web UI 링크를 이용한 접속을 권장합니다. 자세한 내용은 Impala WEB UI 접속을 참조해 주십시오.
- Impala가 설치된 클러스터에 Atlas 서비스를 설치하는 경우, Port 중복으로 인해 Atlas 서비스가 정상적으로 실행되지 않을 수 있습니다.
- Ambari UI > Atlas > CONFIGS > ADVANCED > Advanced application-properties > atlas.server.http.port의 값을 Impala가 사용 중인 Port 번호(21000)와 중복되지 않게 변경 후 서비스를 재실행해 주십시오.
Impala shell
Impala shell은 쿼리를 실행할 수 있는 반응형 셸(shell)을 제공합니다. Impala shell 사용에 대한 자세한 설명은 Impala shell Documentation을 참조해 주십시오.
- Impala shell에서 Impalad 연결
/usr/lib/impala_3_1_0_0_78/impala-shell/impala-shell -i <hiveserver2가 설치된 FQDN> 예시) impala-shell -i m-001-클러스터명-***-hd.kr.ch.naverncp.com;
Impala shell에서 Impalad 연결 시 <impalad-HOST-NAME>는 Impalad를 실행 중인 데이터 노드의 호스트명입니다. Ambari UI > Impala > Quick Links > Impala Server WEB-UI의 호스트명입니다.
-
테이블 생성을 위해 Hive 속성 변경
Ambari UI > Hive > CONFIGS > ADVANCED > Advanced hive-site > hive.strict.managed.tables 의 값을 false로 변경한 뒤 저장하고 Hive를 재시작해 주십시오. -
데이터베이스 및 테이블 생성
CREATE database test; USE test; CREATE TABLE testTable ( ID INT ); -
데이터 저장 후 조회
INSERT INTO testTable(ID) VALUES (1); SELECT * FROM testTable;
더 많은 쿼리 예제는 Apache Impala Guide의 p.35~p.39를 참조해 주십시오.
Impala WEB UI 접속
Hue WEB UI에서 Impala 편집기를 확인할 수 있습니다.

Impala 편집기가 보이지 않는 경우 다음 과정을 진행해 주십시오.
- Ambari Web UI > Hue > Configs > Hue Service Module > Hue Impala Module을 클릭해 주십시오.
ON상태로 변경 후, 서비스를 재실행해 주십시오.
