Apache Hive와 Apache Impala: 주요 차이점

게시 됨: 2022-11-23

빅 데이터 분석을 처음 사용하는 경우 Apache 도구의 호스트가 레이더에 있을 수 있습니다. 그러나 서로 다른 도구의 순전히 혼란스럽고 때때로 압도적일 수 있습니다.

이 게시물은 이 혼란을 해결하고 Apache Hive와 Impala가 무엇이고 서로 다른 점을 설명합니다!

아파치 하이브

Apache Hive는 Apache Hadoop 플랫폼용 SQL 데이터 액세스 인터페이스입니다. Hive를 사용하면 SQL 구문을 사용하여 데이터를 쿼리, 집계 및 분석할 수 있습니다.

읽기 액세스 체계는 HDFS 파일 시스템의 데이터에 사용되므로 데이터를 일반 테이블 또는 관계형 DBMS와 같이 취급할 수 있습니다. HiveQL 쿼리는 MapReduce 작업을 위해 Java 코드로 변환됩니다.

하이브

Hive 쿼리는 SQL 언어를 기반으로 하지만 SQL-92 표준을 완전히 지원하지 않는 HiveQL 쿼리 언어로 작성됩니다.

그러나 이 언어를 사용하면 HiveQL 기능을 사용하는 것이 불편하거나 비효율적일 때 프로그래머가 쿼리를 사용할 수 있습니다. HiveQL은 사용자 정의 스칼라 함수(UDF), 집계(UDAF 코드) 및 테이블 함수(UDTF)로 확장할 수 있습니다.

Apache Hive는 어떻게 작동합니까?

Apache Hive는 HiveQL 언어(SQL에 가까움)로 작성된 프로그램을 하나 이상의 MapReduce, Apache Tez 또는 Apache Spark 작업으로 변환합니다. 이들은 Hadoop에서 시작할 수 있는 세 가지 실행 엔진입니다. 그런 다음 Apache Hive는 HDFS(Hadoop Distributed File System) 파일의 배열로 데이터를 구성하여 클러스터에서 작업을 실행하여 응답을 생성합니다.

Apache Hive 테이블은 관계형 데이터베이스와 유사하며 데이터 단위는 가장 중요한 단위에서 가장 세분화된 단위로 구성됩니다. 데이터베이스는 다시 "버킷"으로 나눌 수 있는 파티션으로 구성된 어레이입니다.

하이브서버1

데이터는 HiveQL을 통해 액세스할 수 있습니다. 각 데이터베이스 내에서 데이터는 번호가 매겨지고 각 테이블은 HDFS 디렉터리에 해당합니다.

웹 인터페이스, CLI 또는 외부 클라이언트와 같은 Apache Hive 아키텍처 내에서 여러 인터페이스를 사용할 수 있습니다.

실제로 "Apache Hive Thrift" 서버를 사용하면 원격 클라이언트가 다양한 프로그래밍 언어를 사용하여 Apache Hive에 명령과 요청을 제출할 수 있습니다. Apache Hive의 중앙 디렉터리는 모든 정보를 포함하는 "메타스토어"입니다.

Hive를 작동시키는 엔진을 "드라이버"라고 합니다. 최적의 실행 계획을 결정하기 위해 컴파일러와 옵티마이저를 번들로 제공합니다.

마지막으로 보안은 Hadoop에 의해 제공됩니다. 따라서 클라이언트와 서버 간의 상호 인증을 위해 Kerberos에 의존합니다. Apache Hive에서 새로 생성된 파일에 대한 권한은 HDFS에 의해 결정되며 사용자, 그룹 또는 기타 인증을 허용합니다.

하이브의 특징

  • Hadoop과 Spark의 컴퓨팅 엔진을 모두 지원합니다.
  • HDFS를 사용하고 데이터 웨어하우스로 작동합니다.
  • MapReduce 사용 및 ETL 지원
  • HDFS로 인해 Hadoop과 유사한 내결함성을 갖습니다.

Apache Hive: 이점

Apache Hive는 쿼리 및 데이터 분석에 이상적인 솔루션입니다. 그것은 질적 통찰력을 얻을 수 있게 하여 경쟁 우위를 제공하고 시장 수요에 대한 대응을 촉진합니다.

Apache Hive의 주요 이점 중 "SQL 친화적" 언어와 연결된 사용 용이성을 언급할 수 있습니다. 또한 내부 데이터베이스 형식의 디스크에서 데이터를 읽거나 번호를 매길 필요가 없기 때문에 데이터의 초기 삽입 속도가 빨라집니다.

데이터가 HDFS에 저장된다는 것을 알면 최대 수백 페타바이트 데이터의 대용량 데이터 세트를 Apache Hive에 저장할 수 있습니다. 이 솔루션은 기존 데이터베이스보다 훨씬 더 확장 가능합니다. 그것이 클라우드 서비스라는 것을 알고 있는 Apache Hive는 사용자가 워크로드(예: 작업)의 변동에 따라 가상 서버를 신속하게 시작할 수 있도록 합니다.

보안은 Hive가 문제 발생 시 복구에 중요한 워크로드를 복제하는 기능을 통해 더 나은 성능을 발휘하는 측면이기도 합니다. 마지막으로 시간당 최대 100,000개의 요청을 처리할 수 있기 때문에 작업 용량은 타의 추종을 불허합니다.

아파치 임팔라

Apache Impala는 C++로 작성되고 Apache 2.0 라이선스에 따라 배포되는 Apache Hadoop에 저장된 데이터에 대한 SQL 쿼리의 대화형 실행을 위한 대규모 병렬 SQL 쿼리 엔진입니다.

Impala는 MPP(Massively Parallel Processing) 엔진, 분산 DBMS, SQL-on-Hadoop 스택 데이터베이스라고도 합니다.

아파치-임팔라-로고-1

Impala는 프로세스 인스턴스가 서로 다른 클러스터 노드에서 실행되어 클라이언트 요청을 수신, 예약 및 조정하는 분산 모드에서 작동합니다. 이 경우 SQL 쿼리 조각의 병렬 실행이 가능합니다.

클라이언트는 Apache Hadoop(HBase 및 HDFS) 또는 Amazon S3에 저장된 데이터에 대해 SQL 쿼리를 보내는 사용자 및 애플리케이션입니다. Impala와의 상호 작용은 HUE(Hadoop User Experience) 웹 인터페이스, ODBC, JDBC 및 Impala Shell 명령줄 셸을 통해 발생합니다.

Impala는 메타데이터 저장소를 사용하여 인기 있는 또 다른 SQL-on-Hadoop 도구인 Apache Hive에 인프라를 의존합니다. 특히 Hive Metastore는 데이터베이스의 가용성과 구조를 Impala에 알려줍니다.

스키마 개체를 생성, 수정 및 삭제하거나 SQL 문을 통해 테이블에 데이터를 로드할 때 해당 메타데이터 변경 사항이 전문 디렉터리 서비스를 사용하여 모든 Impala 노드에 자동으로 전파됩니다.

Impala의 핵심 구성 요소는 다음과 같은 실행 파일입니다.

  • Impalad 또는 Impala 데몬은 HDFS, HBase 및 Amazon S3 데이터에 대한 쿼리를 예약하고 실행하는 시스템 서비스입니다. 하나의 impalad 프로세스가 각 클러스터 노드에서 실행됩니다.
  • Statestore는 클러스터에 있는 모든 impalad 인스턴스의 위치와 상태를 추적하는 이름 지정 서비스입니다. 이 시스템 서비스의 한 인스턴스는 각 노드와 주 서버(네임 노드)에서 실행됩니다.
  • Catalog는 Impala DDL 및 DML 문의 변경 사항을 영향을 받는 모든 Impala 노드로 전파하여 클러스터의 모든 노드에서 새 테이블 또는 새로 로드된 데이터를 즉시 볼 수 있도록 하는 메타데이터 조정 서비스입니다. 하나의 Catalog 인스턴스가 Statestored 데몬과 동일한 클러스터 호스트에서 실행되는 것이 좋습니다.

Apache Impala는 어떻게 작동합니까?

Apache Hive와 마찬가지로 Impala는 SQL 대신 SQL92의 하위 집합인 유사한 선언적 쿼리 언어인 HiveQL(Hive Query Language)을 사용합니다.

Impala에서 요청의 실제 실행은 다음과 같습니다.

클라이언트 애플리케이션은 표준화된 ODBC 또는 JDBC 드라이버 인터페이스를 통해 임팔라드에 연결하여 SQL 쿼리를 보냅니다. 연결된 임팔라드는 현재 요청의 코디네이터가 됩니다.

클러스터의 impalad 인스턴스에 대한 작업을 결정하기 위해 SQL 쿼리를 분석합니다. 그런 다음 최적의 쿼리 실행 계획이 작성됩니다.

Impalad는 시스템 서비스의 로컬 인스턴스를 사용하여 HDFS 및 HBase에 직접 액세스하여 데이터를 제공합니다. Apache Hive와 달리 이러한 직접적인 상호 작용은 중간 결과가 저장되지 않기 때문에 쿼리 실행 시간을 크게 절약합니다.

이에 대한 응답으로 각 데몬은 조정 임팔라드로 데이터를 반환하고 결과를 다시 클라이언트로 보냅니다.

임팔라

임팔라의 특징

  • 실시간 인메모리 처리 지원
  • SQL 친화적
  • HDFS, Apache HBase 및 Amazon S3와 같은 스토리지 시스템 지원
  • Pentaho 및 Tableau와 같은 BI 도구와의 통합 지원
  • HiveQL 구문 사용

Apache Impala: 이점

Impala는 모든 시스템 데몬 프로세스가 부팅 시 직접 시작되기 때문에 가능한 시작 오버헤드를 방지합니다. 쿼리 실행 시간을 크게 절약합니다. Impala의 추가 속도 증가는 Hive와 달리 이 Hadoop용 SQL 도구가 중간 결과를 저장하지 않고 HDFS 또는 HBase에 직접 액세스하기 때문입니다.

또한 Impala는 Hive처럼 컴파일이 아닌 런타임에 프로그램 코드를 생성합니다. 그러나 Impala의 고속 성능의 부작용은 신뢰성 감소입니다.

특히 SQL 쿼리 실행 중에 데이터 노드가 다운되면 Impala 인스턴스가 다시 시작되고 Hive는 데이터 소스에 대한 연결을 계속 유지하여 내결함성을 제공합니다.

Impala의 다른 이점으로는 보안 네트워크 인증 프로토콜인 Kerberos, 우선 순위 지정, 요청 대기열 관리 기능, LZO, Avro, RCFile, Parquet 및 Sequence와 같은 널리 사용되는 빅 데이터 형식에 대한 지원 기능이 내장되어 있습니다.

하이브 대 임팔라: 유사점

Hive 및 Impala는 Apache Software Foundation 라이선스에 따라 무료로 배포되며 Hadoop 클러스터에 저장된 데이터 작업을 위한 SQL 도구를 참조합니다. 또한 HDFS 분산 파일 시스템도 사용합니다.

Impala와 Hive는 Apache Hadoop 클러스터에 저장된 빅 데이터의 SQL 처리에 공통적으로 초점을 맞춰 서로 다른 작업을 구현합니다. Impala는 SQL과 유사한 인터페이스를 제공하므로 Hive 테이블을 읽고 쓸 수 있으므로 데이터를 쉽게 교환할 수 있습니다.

동시에 Impala는 Hadoop에서 SQL 작업을 매우 빠르고 효율적으로 만들어 빅 데이터 분석 연구 프로젝트에서 이 DBMS를 사용할 수 있도록 합니다. 가능할 때마다 Impala는 장기 실행 SQL 배치 쿼리를 실행하는 데 이미 사용된 기존 Apache Hive 인프라와 함께 작동합니다.

또한 Impala는 기존의 MySQL 또는 PostgreSQL 데이터베이스인 메타스토어, 즉 Hive가 유사한 데이터를 저장하는 동일한 위치에 테이블 정의를 저장합니다. 모든 열이 Impala에서 지원하는 데이터 유형, 파일 형식 및 압축 코덱을 사용하는 한 Impala가 Hive 테이블에 액세스할 수 있습니다.

하이브 대 임팔라: 차이점

Hive-Vs-Impala-차이점

프로그래밍 언어

Hive는 Java로 작성된 반면 Impala는 C++로 작성되었습니다. 그러나 Impala는 일부 Java 기반 Hive UDF도 사용합니다.

사용 사례

데이터 엔지니어는 ETL 프로세스(추출, 변환, 로드)에서 Hive를 사용합니다. 예를 들어 여행 정보 수집기 및 공항 정보 시스템과 같은 대규모 데이터 세트에서 장기 실행 배치 작업을 수행합니다. 결과적으로 Impala는 주로 분석가와 데이터 과학자를 대상으로 하며 비즈니스 인텔리전스와 같은 작업에 주로 사용됩니다.

성능

Impala는 SQL 쿼리를 실시간으로 실행하는 반면 Hive는 데이터 처리 속도가 느린 것이 특징입니다. 간단한 SQL 쿼리로 Impala는 Hive보다 6-69배 빠르게 실행할 수 있습니다. 그러나 Hive는 복잡한 쿼리를 더 잘 처리합니다.

대기 시간/처리량

Hive의 처리량은 Impala보다 훨씬 높습니다. 메모리에서 쿼리 캐싱을 활성화하는 LLAP(Live Long and Process) 기능은 Hive에 우수한 저수준 성능을 제공합니다.

LLAP에는 장기 시스템 서비스(데몬)가 포함되어 있어 HDFS 데이터 노드와 직접 상호 작용하고 긴밀하게 통합된 DAG 쿼리 구조(방향성 비순환 그래프)(빅 데이터 컴퓨팅에서 활발히 사용되는 그래프 모델)를 대체할 수 있습니다.

결함 허용

Hive는 모든 중간 결과를 보존하는 내결함성 시스템입니다. 확장성에도 긍정적인 영향을 주지만 데이터 처리 속도 저하로 이어집니다. 결과적으로 Impala는 더 많은 메모리 바인딩이 있기 때문에 내결함성 플랫폼이라고 할 수 없습니다.

코드 변환

Hive는 컴파일 시간에 쿼리 식을 생성하고 Impala는 런타임에 쿼리 식을 생성합니다. Hive는 응용 프로그램을 처음 시작할 때 "콜드 스타트" 문제가 특징입니다. 쿼리는 데이터 원본에 대한 연결을 설정해야 하기 때문에 느리게 변환됩니다.

Impala에는 이러한 종류의 시작 오버헤드가 없습니다. SQL 쿼리를 처리하는 데 필요한 시스템 서비스(데몬)는 부팅 시 시작되어 작업 속도를 높입니다.

스토리지 지원

Impala는 LZO, Avro 및 Parquet 형식을 지원하고 Hive는 일반 텍스트 및 ORC와 함께 작동합니다. 그러나 둘 다 RCFIle 및 Sequence 형식을 지원합니다.

아파치 하이브 아파치 임팔라
언어 자바 C++
사용 사례 데이터 엔지니어링 분석 및 분석
성능 간단한 쿼리에 높음 상대적으로 낮음
지연 시간 캐싱으로 인한 대기 시간 증가 덜 잠복
결함 허용 MapReduce로 인해 더 관대함 MPP로 인해 덜 관대함
변환 콜드 스타트로 인해 느려짐 더 빠른 변환
스토리지 지원 일반 텍스트 및 ORC LZO, Avro, 마루

마지막 말

Hive와 Impala는 경쟁하는 것이 아니라 서로를 효과적으로 보완합니다. 둘 사이에는 상당한 차이가 있지만 공통점도 상당히 많으며 다른 하나를 선택하는 것은 프로젝트의 데이터 및 특정 요구 사항에 따라 다릅니다.

Hadoop과 Spark 간의 일대일 비교를 탐색할 수도 있습니다.

.