Apache Impala

김도비·2022년 5월 29일
0

Bigdata

목록 보기
1/9

Hadoop 기반 데이터를 SQL를 이용해 실시간 질의할 수 있게 해주는 시스템

기존 Hive를 이용하여 동일한 기능을 사용할 수 있지만, Hive 경우 MapReduce 프레임워크를 이용하기에 속도적으로 큰 차이를 보인다.
Impala는 실시간 데이터 접근을 위해 임팔라 자체 고유 분산 처리엔진을 사용하여 처리한다.

Apache Impala 구조

Impalad

Impalad는 impala daemon으로 실제 쿼리를 수행하는 역할을 담당합니다.
Impalad는 그림과 같이 Query Compiler, Query Coordinator, Query Executor로 이루어져 있습니다.

Compiler는 말그대로 client에서 요청받은 SQL 질의를 Compile 한 후 어떻게 처리할지 결정합니다.
Coordinator는 Compiler가 전달한 요청서를 받아 각각 다른 호스트에 있는 Impalad의 Executor에 요청합니다.

이는 데이터의 locality를 보장하며 이로인해 분산 질의 처리가 가능해지며 성능이 향상됩니다.

마지막으로 Executor는 실제로 자신이 담당하는 데이터에 대해서 SQL 질의를 수행하는 역할을 합니다.

질의 수행이 끝난 Executor는 Coordinator에게 결과를 반환합니다.
각 Impalad는 metadata를 가지고 있습니다.
이 metadata는 필요한 데이터가 어느 호스트(노드)에 있는지에 대한 mapping 정보가 담겨져 각 Impalad가 metadata를 가지고 있기 때문에, Client의 요청은 모든 Impalad가 수신 할 수 있습니다.

StateStore

StateStore는 각 Impalad의 상태를 관리하며 데이터 일관성을 위해 Metadata의 변경 사항을 모든 Impalad에 브로드캐스팅하는 역할을 담당합니다.

StateStore는 Impala 서비스에서 없다고 동작이 안하진 않습니다.
다만, 클러스터 내에서 Impalad가 제외된 경우 쿼리 가능한 daemon 그룹에서 제외를 못하며, metadata 갱신이 안되는 경우가 발생할 수 있습니다.
사실상 운영시 StateStore도 띄어야 합니다.

Catalog Service

Catalog Service는 Impala 쿼리로 데이터의 CUD 혹은 DDL 작업 시,
이를 impalad의 metadata에 반영하기 위해 StateStore에 브로드캐스팅해달라고 요청하는 역할을 담당합니다.
브로드캐스팅은 StateStore를 통해서 수행되므로 Catalog Service와 StateStore는 같은 호스트에서 수행하는 것이 좀 더 효율적입니다.

profile
모든 걸 기록하자

0개의 댓글