Practice makes perfect

[BIGDATA Platform] 빅데이터 분석 활용 기술 – 임팔라(Impala) 본문

빅데이터/BIGDATA Platform

[BIGDATA Platform] 빅데이터 분석 활용 기술 – 임팔라(Impala)

kerpect 2020. 6. 19. 00:18

 

임팔라(Impala)란?

아파치 임팔라(Apache Impala)는 아파치 하둡을 실행하는 컴퓨터 클러스터에 저장된 데이터를 위한 오픈 소스 대규모 병렬 처리(MPP) SQL 쿼리 엔진입니다. 빅데이터 분석을 인메모리 기반의 실시간 온라인 분석까지 확대를 가능하게 하며, 구글 드레멜 논문 2010년에 발표를 시작으로 2012년 10월 실시간 빅데이터 분석 질의가 가능한 임팔라를 클라우데라가 오픈소스로 발표하였습니다.

 

임팔라(Impala) 홈페이지 : impala.apache.org/

 

 

 

임팔라(Impala)의 기능(실시간 - real time)

 

- H베이스(HBase)나 맵-리듀스 같은 별도 계층을 거치지 않고 HDFS(Hadoop Distributed File System)와 직접 통신을 합니다. 그리고 하이브처럼 ‘하이브쿼리언어(HiveQL)’‘하이브 쿼리 언어(HiveQL)’를 사용합니다.

( 추가 설명 : C++ 기반으로 만들어졌으며, 별도의 실행 엔진을 사용하므로 맵-리듀스 프로그래밍을 할 필요가 없습니다.)

 

- 임팔라는 동일한 파일과 데이터 포맷, 메타데이터, 보안 및 자원 관리 프레임워크(맵리듀스, 아파치 하이브, 아파치 피그 및 기타 하둡 소프트웨어가 사용)를 사용하기 위해 하둡과 연동된다.  

 

- 임팔라는 다양한 파일 저장소(HDFS, 쿠두, Hbase, Amazon-S3, Azure Data Lake Store)의 데이터를 SQL을 사용해 실시간으로 분석하는 것을 지원합니다.

 

 

Impala와 Hive의 차이점

 

: Impala와 Hive의 차이는 실시간성 여부입니다. Hive는 데이터 접근을 위해 MapReduce 프레임워크를 이용하는 반면에, Impala는 응답 시간을 최소한으로 줄이기 위해 고유의 분산 질의 엔진을 사용합니다. 이 분산 질의 엔진은 클러스터 내 모든 데이터 노드에 설치되도록 했습니다. 그래서 Impala와 Hive는 동일 데이터에 대한 응답 시간에 있어서 확연한 성능 차이를 보이고 있습니다.

 

Cloudera는 Impala의 성능이 좋은 이유로 다음 세 가지를 언급합니다.

 

1) Impala는 Hive보다 CPU 부하를 줄였고, 줄인 만큼 I/O 대역폭을 이용할 수 있습니다. 그래서 순수 I/O bound 질의의 경우 Impala는 Hive보다 3~4배 좋은 성능 결과를 보여줍니다.

 

2) 질의가 복잡해지면 Hive는 여러 단계의 MapReduce 작업 또는, Reduce-side 조인(JOIN) 작업이 필요합니다. 이처럼 MapReduce 프레임워크로 처리하기에 비효율적인 질의(적어도 하나 이상의 JOIN 연산이 들어간 질의)의 경우 Impala가 7~45배 정도 더 좋은 성능을 보입니다.

 

3) 분석할 데이터블록이 파일 캐시 되어 있는 상태라면 매우 빠른 성능을 보여주고, 이 경우 Hive보다 20~90배 빠른 성능을 보여줍니다.

 

 

 

임팔라(Impala) 아키텍처

 

Impalad : 하둡의 데이터노드에 설치되어 임팔라의 실행 쿼리에 대한 계획, 스케줄링, 엔진을 관리하는 코어

Impalad 안에 Query Planner , Query Coordinator , Query Exec Engine 이 들어있습니다.

 

Query Planner : 임팔라 쿼리에 대한 실행 계획을 수립

Query Coordinator : 임팔라의 잡 리스트 및 스케줄링 관리

Query Exec Engine : 임팔라의 쿼리를 최적화해서 실행하고, 쿼리 결과를 제공

 

Statestored : 분산 환경에 설치돼 있는 Impalad의 설정 정보 및 서비스를 관리

 

Catalogd : 임팔라에서 실행된 작업들을 관리하며, 필요시 작업 이력을 제공

 

임팔라는 크게 impalad와 statestored 로 구성돼 있습니다. impalad는 분산 질의 엔진 역할을 담당하는 프로세스로, Hadoop 클러스터 내 데이터 노드 위에서 질의에 대한 plan 설계와 질의 처리 작업합니다. 그리고 impala state store 프로세스는 각 데이터 노드에서 수행되는 impalad에 대한 메타데이터를 유지하는 역할을 담당합니다. impalad 프로세스가 클러스터 내에 추가 또는 제거될 때, impala state store 프로세스를 통해 메타데이터가 업데이트됩니다.