Apache Impala
An MPP SQL engine in C++ for interactive queries over Hive tables on HDFS, Kudu, Iceberg and object storage; built and mainly sold by Cloudera.
- What it is
- Query engines
- Type
- Open source
- Made by
- Apache Software Foundation
- License
- Apache 2.0
- Facts checked
- 6 October 2026
What it is
Impala runs long-lived daemons instead of launching jobs. An impalad process runs on every worker host, often next to an HDFS DataNode so it can read blocks locally; any of them can accept a query from impala-shell, JDBC or ODBC, plan it, and act as coordinator while the others execute fragments and stream results back. Since Impala 2.9 you can dedicate some hosts to coordinating and others to executing. Table definitions come from the Hive Metastore, which Impala shares with Hive. A catalogd daemon caches that metadata and file locations, and a single statestored daemon tracks which impalads are alive and broadcasts catalog changes. The planner is Java; the executor is C++ and uses LLVM to generate machine code for each query’s inner loops, and operators spill to disk under memory pressure.
Impala reads Parquet, ORC, Avro and text files on HDFS, S3, ADLS and Ozone, queries Apache Kudu tables (which allow in-place UPDATE, DELETE and UPSERT) and HBase tables, and since 4.0 (2021) reads and writes Iceberg tables, including DELETE, UPDATE and MERGE on Iceberg v2. The Apache project ships source releases under Apache 2.0; the current line is 4.5. Cloudera created Impala and sells it as part of its platform: in Cloudera Data Warehouse, an Impala Virtual Warehouse is one of two engine types, next to Hive, that query the same Database Catalog.
Why teams pick it
- Low-latency SQL for BI tools on data already in a Hadoop or Cloudera lake, with no per-query job startup
- Shares tables and the Hive Metastore with Hive and Spark, so one copy of the data serves batch and interactive SQL
- C++ executor with LLVM code generation; Cloudera’s CIDR paper measured up to 5.7x speedups from codegen alone
- Writes Iceberg v2 tables, and Kudu tables give it fast in-place UPDATE, DELETE and UPSERT next to full scans
- Active community: the project reports high activity in 2026, with work on Iceberg v3, a Calcite planner and a Kubernetes operator
Watch out for
- Metadata is cached: after Hive, Spark or any other tool adds files or partitions, you must run REFRESH or INVALIDATE METADATA before Impala sees them
- No mid-query recovery: if a node crashes, the query fails; transparent retries rerun the whole query only when cluster membership changed
- Partial format support: ORC is read-only, and Iceberg writes produce only Parquet data files and position deletes (no equality deletes)
- In practice a Cloudera product: the Apache project publishes source tarballs, and the managed offering is Cloudera Data Warehouse
- A single statestored and catalogd: if you run DDL while the statestore is down, queries that touch the new objects fail
Alternatives
What all query engines have in common →
Amazon AthenaAWSAWS’s serverless SQL engine for data in S3: no cluster to run, and on-demand queries cost $5 per TB scanned.
Apache CalciteOpen sourceA Java framework with everything a database needs to understand a query (SQL parser, validator, relational algebra and a rule-based, cost-based optimizer) but no storage of its own, which Hive, Flink, Druid, Dremio, Beam and many other systems embed as their SQL front end and planner.
Apache ZeppelinOpen sourceA self-hosted web notebook where each paragraph runs through an interpreter: Spark, Flink, JDBC, Python and more. Maintained, but behind Jupyter and Databricks in reach.
GizmoSQLOpen sourceA database server that wraps DuckDB (or SQLite) and serves it to many clients over Arrow Flight SQL, with TLS and authentication.
HotdataCommercialA managed SQL engine for AI agents, built in Rust on Apache DataFusion and Arrow: each agent gets short-lived “instant databases” to load data into, then runs read-only SQL, vector, full-text and geospatial queries over an HTTP API or CLI.
IbisOpen sourceA Python dataframe API that compiles to SQL, so the same code runs on DuckDB on a laptop and on BigQuery, Snowflake, PostgreSQL or more than 20 other engines.
Spice.ai OSSOpen sourceA single-binary SQL engine in Rust, built on DataFusion and Arrow, that federates queries across databases, warehouses and lakes, keeps hot datasets in a local accelerated copy, and adds search and LLM APIs on top.
VeloxOpen sourceMeta’s open-source C++ execution engine library: it takes an already-optimized query plan and runs it with vectorized operators, and it is the engine inside Presto’s C++ workers (Prestissimo) and Apache Gluten’s native Spark.How it fits with other technologies
What Apache Impala uses
An Iceberg table in impala-shell, plus the REFRESH that outside writes need · sql
-- impala-shell -i impala-coordinator:21050
CREATE TABLE sales.orders (
order_id BIGINT, customer_id BIGINT, amount DECIMAL(10,2), ts TIMESTAMP)
PARTITIONED BY SPEC (day(ts))
STORED AS ICEBERG
TBLPROPERTIES ('format-version' = '2');
INSERT INTO sales.orders VALUES (1, 4711, 19.90, now());
DELETE FROM sales.orders WHERE customer_id = 4711;
-- a Hive table that a Spark job just added files to
REFRESH web.page_views;
COMPUTE STATS web.page_views;
SELECT url, count(*) AS views, appx_median(ms) AS p50_ms
FROM web.page_views
WHERE ds = '2026-10-05'
GROUP BY url ORDER BY views DESC LIMIT 10;Ways to run it#
Cloudera Data Warehouse
managedImpala Virtual Warehouses are compute environments that scale independently and query a shared Database Catalog, next to Hive Virtual Warehouses on the same data. They expose HiveServer2-compatible endpoints for Beeline, impala-shell and Impyla.
Apache source releases
build it yourselfThe Apache project publishes signed source tarballs (4.5.x, with older 4.x and 3.4 lines still listed). You build and deploy the impalad, catalogd and statestored daemons yourself, alongside a Hive Metastore.
Kubernetes
in progressThe August 2026 board report lists a Kubernetes operator and Helm chart support among current work, together with Iceberg v3 support and OpenTelemetry integration.
See it in a real stack
No architecture uses Apache Impala yet. Drop it into the playground and wire it up yourself.Open playground →Benchmarks
How to read a benchmark →Where it came from2012–2025
By 2012 Hadoop could store and process petabytes cheaply, but SQL on it meant Hive, which compiled each query into MapReduce jobs. Batch frameworks like that could not give BI and analytic queries the low latency and high concurrency of a traditional analytic database.
A Cloudera team, with Marcel Kornacker as lead author of its 2015 paper, built Impala from scratch in C++ and Java rather than forking Postgres, as many SQL-on-Hadoop systems did. It reused Hadoop’s own pieces, HDFS, HBase, the Hive Metastore and YARN, and replaced MapReduce with daemons on every node that run queries directly. Impala’s beta came out in October 2012 and it reached general availability in May 2013, with nearly one million downloads by early 2015.
Impala showed that an MPP engine could run directly on the Hadoop stack and share its tables. Cloudera donated it to the Apache Incubator in December 2015, and it became a top-level project in November 2017.
Why it’s built this way
- Always-running daemons instead of batch jobs
- Starting MapReduce jobs added latency to every query. Daemons on every DataNode host could start work immediately and read blocks from local disks without crossing the network.
- A new engine in C++, not a Postgres fork
- Impala was architected from the ground up for Hadoop: its storage, file formats and distributed execution, rather than retrofitting a database built for a single machine.
- Runtime code generation with LLVM
- Generic interpreted operators pay for virtual function calls on every row. Compiling each query’s inner loops into machine code at runtime removed that overhead.
- Reuse the Hive Metastore
- Users already defined their tables in Hive. Sharing the Metastore meant Impala could query those tables without a migration, and both tools stayed in sync.
Timeline
- 2012
Cloudera releases the Impala beta in October
- 2013
General availability in May
- 2014
Impala 2.0 released in October
- 2015
Enters the Apache Incubator in December
- 2017
Becomes a top-level Apache project in November
- 2021
Impala 4.0 adds Iceberg table support
- 2025
Impala 4.5.0 released in February
- Kornacker et al.: Impala, a modern, open-source SQL engine for Hadoop (CIDR 2015)
- Apache Incubator: Impala incubation status (entered 2015-12-01, graduated 2017-11-15)
- ASF board minutes, November 15, 2017: Establish the Apache Impala project
- Apache JIRA: IMPALA-10150, write Iceberg tables in Parquet format (fixed in 4.0.0)
- Apache Impala GitHub mirror (tags 4.0.0, June 2021; 4.5.0, February 2025)
Sources14 · facts checked 6 October 2026
- Impala docs: Components of the Impala server (impalad, statestored, catalogd, dedicated coordinators)
- Kornacker et al.: Impala (CIDR 2015): architecture, LLVM code generation, spilling
- Impala docs: REFRESH (needed after loading data outside Impala; shared metastore with Hive)
- Impala docs: INVALIDATE METADATA
- Impala docs: Transparent query retries
- Impala docs: Iceberg tables (v2 DELETE, UPDATE, MERGE; position deletes only; Parquet writes)
- Impala docs: ORC file format (reads enabled by default from 3.4.0, no INSERT)
- Impala docs: Kudu tables (in-place updates, UPDATE, DELETE, UPSERT)
- Impala docs: Amazon S3
- Impala docs: ADLS
- Impala docs: Ozone
- Apache Impala downloads (source releases 4.5.2, 4.1.2, 3.4.2)
- Cloudera docs: Cloudera Data Warehouse service architecture (Impala and Hive Virtual Warehouses)
- ASF board minutes, August 19, 2026: Impala report (high activity, Iceberg v3, Calcite, Kubernetes operator)