Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Iceberg

Apache Iceberg provides an open table format for large analytic datasets with schema evolution, hidden partitioning, and time travel.

Role in the Stack

Iceberg serves as the warm-tier storage format. Tables are managed through the Polaris REST catalog and queried via Impala. Data migrates from Kudu (hot) to Iceberg (warm) as it ages, using CREATE TABLE ... AS SELECT through Impala.

Impala DDL → IcebergCatalogOpExecutor → Polaris REST Catalog → Object Storage

Polaris REST Catalog

Apache Polaris provides the Iceberg REST catalog API (port 8181). It manages Iceberg table metadata, namespace operations, and storage credentials. Polaris is backed by PostgreSQL for metadata persistence.

ServicePortPurpose
Polaris8181Iceberg REST catalog API

Impala Integration

The IcebergRESTCatalog class in the Impala fork implements createTable, dropTable, and renameTable against the Polaris REST API. Catalog configuration is in config/impala/catalog_config_dir/polaris.properties:

connector.name=iceberg
iceberg.catalog.type=rest
uri=http://localhost:8181/api/catalog
iceberg.rest.warehouse=signals

Current Status

  • Implemented: IcebergRESTCatalog.createTable(), dropTable(), renameTable() in the Impala fork
  • Near-term: End-to-end testing of Iceberg table creation via Polaris, SELECT queries on Iceberg tables, Kudu-to-Iceberg data migration

Data Lifecycle

Hot (Kudu)  ──CTAS──►  Warm (Iceberg/Polaris)  ──archive──►  Cold (S3/Object Storage)
 - Low-latency R/W       - Batch analytics              - Long-term retention
 - Recent data            - Historical data              - Compliance