[go: up one dir, main page]

DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Impala: Version Comparison


Logo v1 logo v2 logo
Description
Impala is an open source SQL engine that offers interactive query processing on data stored in Apache Hadoop file formats. As opposed to SQL-on-Hadoop databases such as Hive that are used for long batch jobs, Impala enables interactive exploration and fine-tuning analytic queries by using its Massively Parallel Process (MPP) model. Impala avoids data movement and enables the users to interact with the data stored in HDFS via a SQL front-end rather than the traditional HDFS jobs.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala.html
  2. https://impala.apache.org/docs/build/html/topics/impala_intro.html
Impala is an open source SQL engine that offers interactive query processing on data stored in Apache Hadoop file formats. As opposed to SQL-on-Hadoop databases such as Hive that are used for long batch jobs, Impala enables interactive exploration and fine-tuning analytic queries by using its Massively Parallel Process (MPP) model. Impala avoids data movement and enables the users to interact with the data stored in HDFS via a SQL front-end rather than the traditional HDFS jobs.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala.html
  2. https://impala.apache.org/docs/build/html/topics/impala_intro.html
History
The Impala project was announced in October 2012 with the objective to provide a SQL interface and Business Intelligence tools for data scientists. Impala supports various HDFS file formats, however it is optimized for Parquet, a column-oriented file format which was announced in early 2013. Impala was accepted into the Apache incubator on December 2, 2015.
  1. https://en.wikipedia.org/wiki/Cloudera_Impala
  2. https://impala.incubator.apache.org/docs/build/html/topics/impala_intro.html
The Impala project was announced in October 2012 with the objective to provide a SQL interface and Business Intelligence tools for data scientists. Impala supports various HDFS file formats, however it is optimized for Parquet, a column-oriented file format which was announced in early 2013. Impala was accepted into the Apache incubator on December 2, 2015.
  1. https://en.wikipedia.org/wiki/Cloudera_Impala
  2. https://impala.incubator.apache.org/docs/build/html/topics/impala_intro.html
Start Year 2013
  1. https://docs-archive.cloudera.com/documentation/enterprise/release-notes/topics/rg_impala_vd.html#impala_downloads_101
2013
  1. https://docs-archive.cloudera.com/documentation/enterprise/release-notes/topics/rg_impala_vd.html#impala_downloads_101
End Year
  1. https://en.wikipedia.org/wiki/Cloudera_Impala
  1. https://en.wikipedia.org/wiki/Cloudera_Impala
Twitter URL @ApacheImpala @ApacheImpala
Countries United States of America United States of America
Former Names
Website URL https://impala.apache.org/ https://impala.apache.org/
Docs URL https://impala.apache.org/impala-docs.html https://impala.apache.org/impala-docs.html
Source Repo URL https://github.com/apache/impala https://github.com/apache/impala
Blog URL
Wikipedia URL https://en.wikipedia.org/wiki/Apache_Impala https://en.wikipedia.org/wiki/Apache_Impala
Tags
OLAP
Licenses
Apache v2
Apache v2
Operating Systems
Linux
Linux
Governance
Project Types
Commercial Open Source
CommercialOpen Source
Supported Languages
Written In
C++
C++
Coding Agents
Developer Orgs
Cloudera, Inc.
Cloudera, Inc.
Derived From
Embedded Systems
Inspired By
Compatible With
Hosted Services
Acquisitions
Checkpoints
Checkpoints of a query are not supported in Impala. When a host node on which a query was running fails, Impala cancels the query. Additional support for long running queries will be added in the future so that a query could complete even in the presence of node failures.
  1. https://docs-archive.cloudera.com/documentation/enterprise/5-2-x/topics/impala_faq.html
  2. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_faq.html
Checkpoints of a query are not supported in Impala. When a host node on which a query was running fails, Impala cancels the query. Additional support for long running queries will be added in the future so that a query could complete even in the presence of node failures.
  1. https://docs-archive.cloudera.com/documentation/enterprise/5-2-x/topics/impala_faq.html
  2. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_faq.html
Compression
Concurrency Control
Not Supported
Impala does not support any Concurrency control mechanism. The transactional nature of the HiveMetaStore (HMS), which receives updates on inserts and updates raises an error incase parallel inserts are made into the same table.
  1. https://community.cloudera.com/t5/Support-Questions/java-error-while-paralel-insert/td-p/40621
Not Supported
Impala does not support any Concurrency control mechanism. The transactional nature of the HiveMetaStore (HMS), which receives updates on inserts and updates raises an error incase parallel inserts are made into the same table.
  1. https://community.cloudera.com/t5/Support-Questions/java-error-while-paralel-insert/td-p/40621
Data Model
Relational
Impala is a massively parallel query engine which is not strongly coupled with the underlying storage layer. Currently, impala only supports a flat relational schema. They plan to add support for nested schemas with complex column types.
  1. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
Relational
Impala is a massively parallel query engine which is not strongly coupled with the underlying storage layer. Currently, impala only supports a flat relational schema. They plan to add support for nested schemas with complex column types.
  1. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
Foreign Keys
Although Foreign Keys are not supported by Impala currently, they will be added later for cardinality estimation during query planning. However, they will not be enforced by Impala.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_reserved_words.html
  2. https://issues.apache.org/jira/browse/IMPALA-2112
Although Foreign Keys are not supported by Impala currently, they will be added later for cardinality estimation during query planning. However, they will not be enforced by Impala.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_reserved_words.html
  2. https://issues.apache.org/jira/browse/IMPALA-2112
Hardware Acceleration
Indexes
Not Supported
Impala does not support indexes. Although HIVE provides limited index capabilities, they are not leveraged by Impala. Since Impala is not a monolithic DBMS, Impala is often unaware of the data the shows up in the HDFS files. Hence it is not possible for the index to stay in sync with the base data.
  1. https://docs-archive.cloudera.com/documentation/enterprise/5-6-x/topics/impala_faq.html
  2. https://groups.google.com/a/cloudera.org/forum#!topic/impala-user/dWRVwg_kPhU
Not Supported
Impala does not support indexes. Although HIVE provides limited index capabilities, they are not leveraged by Impala. Since Impala is not a monolithic DBMS, Impala is often unaware of the data the shows up in the HDFS files. Hence it is not possible for the index to stay in sync with the base data.
  1. https://docs-archive.cloudera.com/documentation/enterprise/5-6-x/topics/impala_faq.html
  2. https://groups.google.com/a/cloudera.org/forum#!topic/impala-user/dWRVwg_kPhU
Isolation Levels
Read Committed Read Uncommitted
Impala supports both Read Committed and Read Uncommitted isolation levels.
  1. https://github.com/schubertzhang/impala/blob/master/thirdparty/hbase-0.94.6-cdh4.3.0/src/main/java/org/apache/hadoop/hbase/client/IsolationLevel.java
Read CommittedRead Uncommitted
Impala supports both Read Committed and Read Uncommitted isolation levels.
  1. https://github.com/schubertzhang/impala/blob/master/thirdparty/hbase-0.94.6-cdh4.3.0/src/main/java/org/apache/hadoop/hbase/client/IsolationLevel.java
Joins
Broadcast Join Hash Join Nested Loop Join Shuffle Join
Impala provides a variety of Join Options. Impala does not provide a command to hint on the type of join to be executed incase of Nested Loop Joins and Hash Joins. Impala internally decied on the most suitable join mechanism for the query. However, it supports query hints for choosing between Broadcast and Shuffle joins.
  1. https://docs-archive.cloudera.com/documentation/enterprise/5-9-x/topics/impala_joins.html
Broadcast JoinHash JoinNested Loop JoinShuffle Join
Impala provides a variety of Join Options. Impala does not provide a command to hint on the type of join to be executed incase of Nested Loop Joins and Hash Joins. Impala internally decied on the most suitable join mechanism for the query. However, it supports query hints for choosing between Broadcast and Shuffle joins.
  1. https://docs-archive.cloudera.com/documentation/enterprise/5-9-x/topics/impala_joins.html
Logging
Not Supported
Since Impala does not support transactions and is suited for analytical queries, it does not support logging.
  1. https://www.tutorialspoint.com/impala/impala_overview.html
Not Supported
Since Impala does not support transactions and is suited for analytical queries, it does not support logging.
  1. https://www.tutorialspoint.com/impala/impala_overview.html
Parallel Execution
Query Compilation
Code Generation JIT Compilation
Impala uses the LLVM engine to perform just in time (JIT) query compilation. It uses runtime code generation for specific versions of the function by which performance improvements of more than 5x are achieved.
  1. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
Code GenerationJIT Compilation
Impala uses the LLVM engine to perform just in time (JIT) query compilation. It uses runtime code generation for specific versions of the function by which performance improvements of more than 5x are achieved.
  1. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
Query Execution
Tuple-at-a-Time Model
  1. https://chatwithengineers.com/2016/08/29/a-survey-of-query-execution-engines-from-volcano-to-vectorized-processing
  2. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
Tuple-at-a-Time Model
  1. https://chatwithengineers.com/2016/08/29/a-survey-of-query-execution-engines-from-volcano-to-vectorized-processing
  2. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
Query Interface
Custom API SQL
Impala supports SQL as its query language. It provides a high dgree of compatibility with the Hive Query Language (HiveQL). Additionally it also provides an impala-shell interpreter which processes all the SQL commands supported by Impala along with a few shell-only commands which can be used for performance tuning.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_impala_shell.html
  2. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_langref.html
Custom APISQL
Impala supports SQL as its query language. It provides a high dgree of compatibility with the Hive Query Language (HiveQL). Additionally it also provides an impala-shell interpreter which processes all the SQL commands supported by Impala along with a few shell-only commands which can be used for performance tuning.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_impala_shell.html
  2. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_langref.html
Storage Architecture
Disk-oriented
Impala can access data stored on HDFS in any of the Apache Hadoop file formats, including, Parquet, Text, Avro, RCFile and SequenceFile. It also supports compressed file formats in order to reduce the disk space and I/O volume, although such formats induce a CPU overhead to decompress the data.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_file_formats.html
  2. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
Disk-oriented
Impala can access data stored on HDFS in any of the Apache Hadoop file formats, including, Parquet, Text, Avro, RCFile and SequenceFile. It also supports compressed file formats in order to reduce the disk space and I/O volume, although such formats induce a CPU overhead to decompress the data.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_file_formats.html
  2. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
Storage Format
Avro Hudi ORC Parquet RCFile SequenceFile
  1. https://impala.apache.org/docs/build/html/topics/impala_file_formats.html
AvroHudiORCParquetRCFileSequenceFile
  1. https://impala.apache.org/docs/build/html/topics/impala_file_formats.html
Storage Model
Custom
Impala does not provide its own storage engine but rather reads data from any of the underlying storage format. Nonetheless, when data is stored in Parquet, a binary columnar storage format, it displays significant performance improvement as it substantially reduces the I/O volume.
  1. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
  2. https://www.cloudera.com/blog.html
Custom
Impala does not provide its own storage engine but rather reads data from any of the underlying storage format. Nonetheless, when data is stored in Parquet, a binary columnar storage format, it displays significant performance improvement as it substantially reduces the I/O volume.
  1. https://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf
  2. https://www.cloudera.com/blog.html
Storage Organization
Stored Procedures
Supported
Support for stored procedures in Impala was added from the 1.2 release. It now enables users to write UDFs in C++ or Java based Hive UDFs. C++ UDFs achieve a significant performance improvement over the Java written UDFs. Currently support for User Defined Table Functions (UDTF) has not been added.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_udf.html
Supported
Support for stored procedures in Impala was added from the 1.2 release. It now enables users to write UDFs in C++ or Java based Hive UDFs. C++ UDFs achieve a significant performance improvement over the Java written UDFs. Currently support for User Defined Table Functions (UDTF) has not been added.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_udf.html
System Architecture
Shared-Nothing
Impala is a distributed, Massively Parallel Processing (MPP) query engine which uses a Shared-Nothing architecture. Impala consists of the following three major components 1. Impala Daemon - A daemon process runs on each data node to read and write data for the accepted queries and parallelizes the work across the cluster. It transmits the query results to the central coordinator node. 2. Impala Statestore - It is a daemon process which continously monitors the health status of the daemons on the datanodes in the cluster. When a datanode goes down, it ensures that no requests are made to an unreachable datanode. It provides robustness, load balancing and high availability. 3. Impala Catalog Service - It relays the metadata changes from SQL statements to all the Imapala Daemons. The catalog server ensures that if the metadata change occured via SQL queries issued through Impala.
  1. https://impala.incubator.apache.org/docs/build/html/topics/impala_concepts.html
  2. https://impala.incubator.apache.org/overview.html
Shared-Nothing
Impala is a distributed, Massively Parallel Processing (MPP) query engine which uses a Shared-Nothing architecture. Impala consists of the following three major components 1. Impala Daemon - A daemon process runs on each data node to read and write data for the accepted queries and parallelizes the work across the cluster. It transmits the query results to the central coordinator node. 2. Impala Statestore - It is a daemon process which continously monitors the health status of the daemons on the datanodes in the cluster. When a datanode goes down, it ensures that no requests are made to an unreachable datanode. It provides robustness, load balancing and high availability. 3. Impala Catalog Service - It relays the metadata changes from SQL statements to all the Imapala Daemons. The catalog server ensures that if the metadata change occured via SQL queries issued through Impala.
  1. https://impala.incubator.apache.org/docs/build/html/topics/impala_concepts.html
  2. https://impala.incubator.apache.org/overview.html
Views
Virtual Views
Imapala supports virtual views as lightweight logical constructs to act as query aliases. It does not support materialized views since data updates in the Hadoop Environment make it difficult to keep them up-to date.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_faq.html
Virtual Views
Imapala supports virtual views as lightweight logical constructs to act as query aliases. It does not support materialized views since data updates in the Hadoop Environment make it difficult to keep them up-to date.
  1. https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_faq.html