- 인쇄
- PDF
Impala 사용
- 인쇄
- PDF
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)
Hadoop 클러스터 내 데이터 노드에 설치되어 요청받은 쿼리에 대한 계획, 스케줄링, 실행 엔진을 관리하는 역할을 수행합니다. 각 Impalad는 Query Planner, Query Coordinator, Query Exec engine으로 구성됩니다.- Query Planner: 쿼리에 대한 실행 계획을 수립
- Query Coordinator: job 리스트 및 스케줄링 관리하여 Executor에 요청
- Query Exec Engine: 쿼리를 최적화하여 실행하고 Coordinator에 결과를 반환
Impala Statestore(StateStored)
클러스터의 각 데이터 노드에서 수행되는 Impalad의 상태를 관리하며, Catalogd에서 요청받은 Impalad에 대한 메타데이터 동기화 작업을 수행합니다.Impala Catalog(Catalogd)
쿼리 작업 시 이를 Impalad의 메타데이터에 반영하기 위해 StateStored에 브로드캐스팅을 요청하는 역할을 담당합니다. Impalad에서 직접 메타데이터를 변경한 경우 자동으로 동기화되며, Hive나 HDFS에서 직접 변경한 경우에는 Refresh문으로 동기화 작업을 수행해야 합니다.
쿼리 실행 과정
쿼리 실행 과정은 다음과 같습니다.
- 사용자는 클러스터 내 특정 Impalad에서 Impala shell, ODBC 등을 이용하여 쿼리를 수행
- Impalad는 Hive metastore에서 테이블 스키마를 가져와 질의문의 적합성을 판단하고, HDFS 네임노드에서 질의 수행에 필요한 데이터 블록과 각각의 위치 정보 수집
- 최근 업데이트된 Impala 메타데이터를 기반으로 클러스터 내 모든 Impalad에게 질의 수행에 필요한 정보들을 전파
- 질의와 메타데이터를 전달받은 모든 Impalad는 각자 처리할 데이터 블록을 로컬 디렉터리에서 읽어와 질의 처리를 수행
- 모든 Impalad에서 작업이 완료되면 사용자로부터 질의를 받았던 Impalad는 결과를 취합해 사용자에게 전달
Impala 사용
Impala를 사용하는 방법을 설명합니다.
클러스터 생성
네이버 클라우드 플랫폼 콘솔에서 Cloud Hadoop 클러스터를 생성해 주십시오. 클러스터 생성에 대한 자세한 내용은 클러스터 생성을 참고해 주십시오.
Cloud Hadoop 1.9부터 Impala v4.1.0가 설치된 클러스터를 사용할 수 있습니다.
Ambari UI에서 Impala 서비스 확인
Ambari UI에서 다음과 같이 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/impala-shell/impala-shell connect <impalad-HOST-NAME>
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 접속
Cloud Hadoop 콘솔에서 [Application 별 보기] 를 통해 Impala WEB UI에 접속할 수 있습니다. 자세한 내용은 Application 별 보기를 참조해 주십시오.
Impala WEB UI 페이지에서 Impala 서비스에 대한 전체적인 상태를 알 수 있습니다. 쿼리 기록도 조회할 수 있습니다.
Hue WEB UI에서 Impala 편집기를 확인할 수 있습니다.
Impala 편집기가 보이지 않는 경우 다음의 과정을 진행해 주십시오.
Ambari Web UI > Hue > Configs > Hue Service Module > Hue Impala Module을 클릭하여 ON 상태로 변경 후, 서비스를 재실행해 주십시오.