본문 바로가기
CS/DataEngineering

SQL On Hadoop 분석 도구인 Hive와 Impala는 어떤 차이가 있을까?

by Diligejy 2022. 8. 21.

https://www.youtube.com/watch?v=TwMP1vtWFPo 

1. Hive 특징

    a. Hive QL이라고 불리는 SQL 같은 언어를 제공하여 Hadoop 데이터(파일)를 Query를 이용해서 분석할 수 있게 해주며 Map-Reduce의 모든 기능 지원  

    b. Oracle DBMS가 Data Dictionary를 통해 Table Schema 정보를 관리하고 참조하듯이, Hive 메타스토어를 통해 Table, Column 정보를 관리하며, 실데이터는 Hadoop HDFS에 저장합니다.

    c. Hive Query는 Map-Reduce로 변환되어 실행됩니다. Hive는 Query를 파싱, 실행계획 수립, 최적화 과정을 거쳐 Map-Reduce로 변환하여 처리하므로, 응답 시간이 매우 길며, 대량 데이터의 Full-Scan에 최적화되어 있습니다. Map-Reduce 사용시 다수의 사용자 요청을 동시에 처리하는데 한계가 존재합니다.

    d. 대화형의 Online Query 사용에 부적합합니다. Hive는 배치처리 기반의 Map-Reduce를 통해 데이터를 처리하므로, 사용자가 애드혹(Ad-Hoc) Query를 실행하거나, BI/시각화 도구, 어플레키에션에서 대화형 방식으로 분석할 경우 느립니다. 또한 전체 정렬을 단순 Hive QL로 실행하면 하나의 Reduce만 실행되어 급격한 성능저하 발생합니다.

   e. 데이터의 부분적인 수정/삭제(Record별 Update, Delete)가 불가합니다. 데이터의 부분적인 수정 불가는 Hadoop HDFS의 특징이며, Hive는 HDFS에 저장하므로 HDFS의 특징을 그대로 계승합니다. 그로 인해 Hive Table에서는 Record별 수정하거나 삭제할 수 없고, 전체 데이터를 덮어쓰기 해야 하며, Hive로 처리할 데이터를 적재할 때는 특정 Partition 단위로 적재해 필요시 해당 Partition만 덮어쓰는 방식으로 데이터 관리구조를 설계해야 합니다. Hive 0.14부터는 INSERT, UPDATE, DELTE, MERGE 문을 ORC Stored형식으로 부분적으로 지원합니다.

    f. Transaction 관리 기능이 없어 롤백 처리 불가합니다. 하나의 Hive Query는 여러 개의 Job과 Map-Reduce 프로그램으로 실행되며, 로컬 디스크에 중간 파일들을 만들어냅니다. 이때 특정 Map-Reduce 작업 하나가 실패하면 이미 성공한 잡들이 롤백 처리되지  않으며, 단지 실패한 잡을 재실행하기 위해 시도할 뿐입니다. 이러한 기본 원칙으로 인해 Hive에는 Transaction 관리 기능이 존재하지 않습니다. Hive 0.14부터는 ACID를 부분적으로 지원하고 있으나, 제약사항이 많아 자주 사용되지 않습니다.

    g. Hadoop HDFS, HBase(Column 기반 데이터베이스),Accumulo(정렬된 분산 Column 기반 저장소), Druid(BI/OLAP 전용 분석데이터 저장소), Kudu(빠른 Column 기반 저장소) 등 다양한 저장소를 사용할 수 있음.

 

2. Impala 특징

a. Hadoop용 인터랙티브 SQL로 빠른 응답을 위한 분석용 혹은 Ad-hoc Query에 최적화되어 있습니다.

b. Hive가 Map-Reduce를 통해 처리하는 반면, Impala는 자체 분산 Query Engine을 사용하여 응답속도가 빠릅니다. SQL on Hadoop 도구로 Hive와 Facebook에서 개발한 Presto, Spark SQL 등이 존재하며, TPC-DS 기반 성능 벤치마크에서 Single, Multi User의 Query 응답 시간 모두 Impala가 가장 우수합니다. 성능 벤치마크 시 Impala 2.8, Greenpplum Database 4.3.9.1, Spark SQL 2.1, Presto 0.160, Hive 2.1 with LLAP from HDP 2.5 를 사용합니다.

 

c. 표준 ANSI-92 SQL을 준수하고 HiveQL과 호환성을 제공합니다.

d. 단일 명령문에 대한 Transaction을 지원하나, 다중 명령문에 대한 Transaction은 지원하지 않습니다.

 

e. Hadoop HDFS, HBase, Amazon S3, Azure ADLS, Azure ABFS 등 다양한 저장소를 사용할 수 있으며, Hive, Hue, Kudu 등과 연계하여 사용 가능합니다.

f. 전용 메타스토어를 사용할 필요가 없으며, 기존 Hive 메타스토어를 사용합니다.

g. Impala도 데이터를 HDFS에 저장하므로, 데이터의 부분적인 수정/삭제(Record 별 Update, Delete)가 불가

h. Hive는 Hadoop 설치 및 관리 도구인 Open-Source Apache Ambari에 포함되어 있지만, Impala는 상용 Cloudera CDP 배포본에만 포함되어 별도 설치가 필요합니다.

댓글