Impala-개요
Impala는 무엇입니까?
Impala는 Hadoop 클러스터에 저장된 방대한 양의 데이터를 처리하기위한 MPP (Massive Parallel Processing) SQL 쿼리 엔진입니다. C ++ 및 Java로 작성된 오픈 소스 소프트웨어입니다. 다른 Hadoop 용 SQL 엔진에 비해 높은 성능과 낮은 대기 시간을 제공합니다.
즉, Impala는 Hadoop 분산 파일 시스템에 저장된 데이터에 액세스하는 가장 빠른 방법을 제공하는 최고 성능의 SQL 엔진 (RDBMS와 유사한 경험을 제공)입니다.
왜 Impala인가?
Impala는 HDFS, HBase, Metastore, YARN 및 Sentry와 같은 표준 구성 요소를 활용하여 기존 분석 데이터베이스의 SQL 지원 및 다중 사용자 성능과 Apache Hadoop의 확장 성 및 유연성을 결합합니다.
Impala를 통해 사용자는 Hive와 같은 다른 SQL 엔진에 비해 SQL 쿼리를 사용하여 더 빠른 방식으로 HDFS 또는 HBase와 통신 할 수 있습니다.
Impala는 Hadoop에서 사용하는 Parquet, Avro, RCFile과 같은 거의 모든 파일 형식을 읽을 수 있습니다.
Impala는 Apache Hive와 동일한 메타 데이터, SQL 구문 (Hive SQL), ODBC 드라이버 및 사용자 인터페이스 (Hue Beeswax)를 사용하여 배치 지향 또는 실시간 쿼리를위한 친숙하고 통합 된 플랫폼을 제공합니다.
Apache Hive와 달리 Impala is not based on MapReduce algorithms. 다음을 기반으로 분산 아키텍처를 구현합니다.daemon processes 동일한 컴퓨터에서 실행되는 쿼리 실행의 모든 측면을 담당합니다.
따라서 MapReduce 활용의 지연 시간이 줄어들고 Impala가 Apache Hive보다 빠릅니다.
Impala의 장점
다음은 Cloudera Impala의 몇 가지 주목할만한 장점 목록입니다.
Impala를 사용하면 기존 SQL 지식으로 HDFS에 저장된 데이터를 초고속으로 처리 할 수 있습니다.
데이터 처리는 데이터가있는 곳 (Hadoop 클러스터)에서 수행되기 때문에 Impala와 함께 작업하는 동안 Hadoop에 저장된 데이터에 대해 데이터 변환 및 데이터 이동이 필요하지 않습니다.
Impala를 사용하면 Java (MapReduce 작업)에 대한 지식없이 HDFS, HBase 및 Amazon s3에 저장된 데이터에 액세스 할 수 있습니다. SQL 쿼리의 기본 개념으로 액세스 할 수 있습니다.
비즈니스 도구에서 쿼리를 작성하려면 데이터가 복잡한 ETL (추출 변환로드)주기를 거쳐야합니다. 그러나 Impala를 사용하면이 절차가 단축됩니다. 로드 및 재구성의 시간 소모적 인 단계는 다음과 같은 새로운 기술로 극복됩니다.exploratory data analysis & data discovery 프로세스를 더 빠르게 만듭니다.
Impala는 데이터웨어 하우스 시나리오에서 일반적으로 사용되는 대규모 쿼리에 최적화 된 컬럼 형 스토리지 레이아웃 인 Parquet 파일 형식의 사용을 개척하고 있습니다.
Impala의 특징
다음은 cloudera Impala의 기능입니다.
Impala는 Apache 라이선스에 따라 오픈 소스로 무료로 제공됩니다.
Impala는 인 메모리 데이터 처리를 지원합니다. 즉, 데이터 이동없이 Hadoop 데이터 노드에 저장된 데이터에 액세스 / 분석합니다.
SQL과 유사한 쿼리를 사용하여 Impala를 사용하여 데이터에 액세스 할 수 있습니다.
Impala는 다른 SQL 엔진과 비교할 때 HDFS의 데이터에 대한 더 빠른 액세스를 제공합니다.
Impala를 사용하면 HDFS, Apache HBase 및 Amazon s3와 같은 스토리지 시스템에 데이터를 저장할 수 있습니다.
Impala를 Tableau, Pentaho, Micro 전략 및 Zoom 데이터와 같은 비즈니스 인텔리전스 도구와 통합 할 수 있습니다.
Impala는 LZO, Sequence File, Avro, RCFile 및 Parquet과 같은 다양한 파일 형식을 지원합니다.
Impala는 Apache Hive의 메타 데이터, ODBC 드라이버 및 SQL 구문을 사용합니다.
관계형 데이터베이스 및 Impala
Impala는 SQL 및 HiveQL과 유사한 쿼리 언어를 사용합니다. 다음 표에서는 SQL과 Impala 쿼리 언어 간의 몇 가지 주요 차이점을 설명합니다.
임팔라 | 관계형 데이터베이스 |
---|---|
Impala는 HiveQL과 유사한 쿼리 언어와 같은 SQL을 사용합니다. | 관계형 데이터베이스는 SQL 언어를 사용합니다. |
Impala에서는 개별 레코드를 업데이트하거나 삭제할 수 없습니다. | 관계형 데이터베이스에서는 개별 레코드를 업데이트하거나 삭제할 수 있습니다. |
Impala는 트랜잭션을 지원하지 않습니다. | 관계형 데이터베이스는 트랜잭션을 지원합니다. |
Impala는 인덱싱을 지원하지 않습니다. | 관계형 데이터베이스는 인덱싱을 지원합니다. |
Impala는 많은 양의 데이터 (페타 바이트)를 저장하고 관리합니다. | 관계형 데이터베이스는 Impala와 비교할 때 더 적은 양의 데이터 (테라 바이트)를 처리합니다. |
Hive, Hbase 및 Impala
Cloudera Impala는 Hive와 동일한 쿼리 언어, 메타 스토어 및 사용자 인터페이스를 사용하지만 특정 측면에서 Hive 및 HBase와 다릅니다. 다음 표는 HBase, Hive 및 Impala 간의 비교 분석을 보여줍니다.
HBase | 하이브 | 임팔라 |
---|---|---|
HBase는 Apache Hadoop을 기반으로하는 넓은 열 저장소 데이터베이스입니다. BigTable의 개념을 사용합니다. | Hive는 데이터웨어 하우스 소프트웨어입니다. 이를 사용하여 Hadoop에 구축 된 대규모 분산 데이터 세트에 액세스하고 관리 할 수 있습니다. | Impala는 Hadoop에 저장된 데이터를 관리하고 분석하는 도구입니다. |
HBase의 데이터 모델은 넓은 열 저장소입니다. | Hive는 관계형 모델을 따릅니다. | Impala는 관계형 모델을 따릅니다. |
HBase는 Java 언어를 사용하여 개발되었습니다. | Hive는 Java 언어를 사용하여 개발되었습니다. | Impala는 C ++를 사용하여 개발되었습니다. |
HBase의 데이터 모델은 스키마가 없습니다. | Hive의 데이터 모델은 스키마 기반입니다. | Impala의 데이터 모델은 스키마 기반입니다. |
HBase는 Java, RESTful 및 Thrift API를 제공합니다. | Hive는 JDBC, ODBC, Thrift API를 제공합니다. | Impala는 JDBC 및 ODBC API를 제공합니다. |
C, C #, C ++, Groovy, Java PHP, Python 및 Scala와 같은 프로그래밍 언어를 지원합니다. | C ++, Java, PHP 및 Python과 같은 프로그래밍 언어를 지원합니다. | Impala는 JDBC / ODBC를 지원하는 모든 언어를 지원합니다. |
HBase는 트리거를 지원합니다. | Hive는 트리거에 대한 지원을 제공하지 않습니다. | Impala는 트리거를 지원하지 않습니다. |
이 세 데이터베이스 모두-
NOSQL 데이터베이스입니다.
오픈 소스로 제공됩니다.
서버 측 스크립팅을 지원합니다.
Durability 및 Concurrency와 같은 ACID 속성을 따릅니다.
사용하다 sharding ...에 대한 partitioning.
Impala의 단점
Impala 사용의 몇 가지 단점은 다음과 같습니다.
- Impala는 직렬화 및 역 직렬화에 대한 지원을 제공하지 않습니다.
- Impala는 사용자 지정 바이너리 파일이 아닌 텍스트 파일 만 읽을 수 있습니다.
- HDFS의 데이터 디렉토리에 새 레코드 / 파일이 추가 될 때마다 테이블을 새로 고쳐야합니다.