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…
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 authentication ✅ Data 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.
메타데이터
- 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