← Back to list

Building a Modern Data Lakehouse with Apache Iceberg, Trino, Nessie, and MinIO

In the world of modern data engineering, building scalable, version-controlled, and modular data platforms is more important than ever. In…

Buddika Chaturanga · 2025-08-05 13:30 · 0 claps · 1.5 min read
#data-lake #apache-iceberg #minio #nessie
Open on Medium ↗
Wiki topics: 🔧 · Data Engineering

Building a Modern Data Lakehouse with Apache Iceberg, Trino, Nessie, and MinIO

In the world of modern data engineering, building scalable, version-controlled, and modular data platforms is more important than ever. In this article, I’ll walk you through how I successfully integrated Apache Iceberg, Trino, Project Nessie, and MinIO to create a modern, open-source data lakehouse architecture.

Why This Stack?

Each component in this architecture plays a critical role:

Apache Iceberg — A high-performance table format supporting ACID transactions, schema evolution, partitioning, and time travel.

Trino — A distributed SQL engine that enables fast analytics across large datasets.https://ec2-65-0-150-75.ap-south-1.compute.amazonaws.com/ (admin123:admin123)

Project Nessie — A Git-like catalog for Iceberg, providing branching, commits, and rollback for your data lake metadata. http://ec2-65-0-150-75.ap-south-1.compute.amazonaws.com:4000/

MinIO — A blazing-fast, S3-compatible object storage layer. http://ec2-65-0-150-75.ap-south-1.compute.amazonaws.com:4004/ (minioadmin: minioadmin)

Together, they form a clean separation of compute, storage, and metadata, giving you the benefits of a warehouse with the flexibility of a data lake.

Architecture Overview

All services are containerized with Docker Compose, allowing easy development and reproducibility.

Configuration Details

Here are the key configuration snippets used in this setup. nessie.properties (Trino → Iceberg Nessie catalog)

connector.name=iceberg iceberg.catalog.type=rest iceberg.rest-catalog.uri=http://nessie:19120/api/v2 iceberg.rest-catalog.warehouse=s3a://nessie-warehouse-bucket/

S3/MinIO Configuration (Used by Iceberg)

fs.native-s3.enabled=true s3.endpoint=http://minio:9000 s3.aws-access-key=minioadmin s3.aws-secret-key=minioadmin s3.path-style-access=true

What I Achieved

✅ Successfully queried Iceberg tables via Trino ✅ Catalog persisted in Nessie with full branching/versioning ✅ Trino configured for password-based authenticationData persisted even after container restarts ✅ Built a zero-copy, open-source lakehouse setup on my EC2 instance

Lessons Learned

  • Branching data using Nessie feels just like using Git — a real game-changer for data development workflows.
  • Secure Trino setup required extra care with TLS and password authentication.
  • MinIO’s S3 compatibility made it seamless to integrate with Iceberg and Hadoop-style file systems.
  • Docker orchestration made it easy to spin up, destroy, and restart the entire stack — especially useful in testing failovers and persistence.

Repo


메타데이터
post_id
94cbddc45cee
slug
building-a-modern-data-lakehouse-with-apache-iceberg-trino-nessie-and-minio-94cbddc45cee
url
https://medium.com/@buddikachaturanga/building-a-modern-data-lakehouse-with-apache-iceberg-trino-nessie-and-minio-94cbddc45cee
canonical_url
https://medium.com/@buddikachaturanga/building-a-modern-data-lakehouse-with-apache-iceberg-trino-nessie-and-minio-94cbddc45cee
author_url
https://medium.com/@buddikachaturanga
status
ok
fetched_at
2026-06-09 15:37:30