İçeriğe geç
edumintsBlog
DevOps3 dk okuma

MiniLake: SQL, Delta Lake ve Spark İçeren Yerel Databricks API Emülatörü

Kaynak: Hacker News

Paylaş
DevOpsEdumints Blog
İçindekiler 3 başlık

Dizüstü Bilgisayarınızda Çalışan Databricks API'si#

MiniLake, açık kaynaklı (MIT lisanslı), Python 3.11+ ve Docker tabanlı yerel bir Databricks API emülatörüdür. Sadece sahte yanıtlar dönen bir araç değil; gerçek SQL, gerçek Delta Lake ve gerçek Spark iş yürütme yeteneklerine sahip tam teşekküllü bir motordur. Bulut hesabı açmadan, API anahtarı oluşturmadan ve bulut faturası ödemeden http://localhost:8000 üzerinden geliştirme yapmanıza olanak tanır. Yazılım geliştirme ve öğrenme süreçlerinde bulut maliyetlerini sıfırlarken, çevrimdışı (air-gapped) ortamlarda bile çalışma imkanı sunar.

Kurulumu oldukça pratiktir:

  • pip install minilake && minilake --port 8000 komutuyla PyPI üzerinden,
  • docker run -p 8000:8000 ghcr.io/dmux/minilake:latest komutuyla Docker üzerinden başlatılabilir ve http://localhost:8000/ui/ adresinden yerleşik SQL çalışma alanına erişilebilir.

Doğrudan Uyumlu Olduğu Araçlar ve Temel Metrikler#

Mevcut araçlarınızı kod değişikliği yapmadan doğrudan MiniLake'e yönlendirebilirsiniz:

  • databricks-sdk (Python)
  • Databricks CLI
  • Terraform provider
  • Asset Bundles
  • PySpark + Delta
  • MCP ajanları

Sistemin sunduğu temel kapasite:

  • 30+ emüle edilmiş Databricks API grubu (Unity Catalog'dan SCIM'e kadar)
  • 67 LLM ajanları için aynı porttan sunulan MCP aracı
  • 378+ sahte (mock) nesneler yerine gerçek Databricks SDK ile yürütülen test
  • $0 bulut maliyeti — her şey kendi makinenizde çalışır

Neler Sunuyor? Sahte Sunucu Değil, Gerçek Bir Motor#

Sahte uç noktalar (mock endpoints) hatalı kodların testlerden geçmesine neden olur. MiniLake ise sorgularınızı DuckDB üzerinde çalıştırır, gerçek Delta dosyaları yazar ve konteynerlerde gerçek spark-submit işleri yürüterek yerel testlerin güvenilirliğini kanıtlar:

  • Gerçek Unity Catalog: Kataloglar, şemalar, tablolar ve birimler (volumes) için tam CRUD desteği sunar. Her katalog kendi DuckDB veritabanı dosyasıdır; böylece catalog.schema.table adreslemesi regex yönlendirmesiyle değil, doğal olarak çalışır.
  • Gerçekten Çalışan SQL: Gerçek DuckDB üzerinde ifade yürütme; INLINE ve EXTERNAL_LINKS dizilimleri, JSON_ARRAY, ARROW_STREAM ve CSV formatları ile gerçek sütun tiplerini taşıyan sonuç manifestosu sağlar.
  • Gerçek Delta Lake Dosyaları: Harici (EXTERNAL) Delta tabloları, gerçek Parquet dosyaları ve _delta_log/ dizininden oluşur. INSERT, UPDATE ve DELETE işlemleri gerçek bir Spark işi üzerinden yönlendirilirken, okumalar DuckDB'nin delta_scan() fonksiyonuyla yapılır.
  • Gerçekten Yürütülen İşler (Jobs): spark_python_task, kardeş bir konteynerde spark-submit çalıştırır ve gerçek standart çıktıyı (stdout) döndürür. Gerçek DAG zamanlaması depends_on ve run_if kurallarına uyar, bağımsız dalları paralel çalıştırır.
  • Spark İçin Unity Catalog Protokolü: spark.table("cat.sch.tbl") ifadeleri, resmi UCSingleCatalog bağlayıcısı aracılığıyla MiniLake üzerinde çözülür; Spark gerçek bir çalışma alanıyla aynı protokolü konuşur.
  • Yerleşik SQL Çalışma Alanı: /ui adresinde kataloğa duyarlı otomatik tamamlamalı Monaco editörü, sanallaştırılmış sonuç ızgarası, grafikler, CSV/JSON dışa aktarma, kayıtlı sorgular, sorgu geçmişi ve gömülü JupyterLab içeren Athena tarzı bir arayüz sunar.
  • Terraform ve Asset Bundles: Databricks sağlayıcısını localhost'a yönlendirdiğinizde terraform apply gerçek kataloglar oluşturur. apply, plan ve destroy döngüleri ile databricks bundle deploy ve bundle run uçtan uca gerçek işleri çalıştırır.
  • Ajanlar İçin MCP Sunucusu: /mcp adresinde 67 araç, 8 kaynak ve 4 istem (prompt) barındırır. Beş çağrılık diziyi tek çağrıya indiren bileşik araçlar ve ajanların hatalı Spark SQL yazmasını engelleyen SQL lehçesi kaynağı içerir. Hazır MCP Sunucuları ve Ekosistem ile MCP'nin Temel İlkeleri: Tools, Resources ve Prompts konularını pratikte deneyimlemek için harika bir laboratuvardır.
  • CI İçin Tasarlandı: Tek bir POST /_minilake/reset isteği, konteyneri yeniden başlatmadan her test için temiz bir çalışma alanı sağlar. /health, /ready ve /services uç noktaları kontrol düzlemini tamamlar.
  • Workspace, DBFS, Dosyalar ve Sırlar (Secrets): Parçalı yükleme destekli dosya tabanlı not defteri ve dosya depolaması sunar. Sırlar (Secrets), tıpkı Databricks'te olduğu gibi yalnızca bir işin çalışma ortamı içinde çözümlenebilen gerçek CRUD nesneleridir.

Kaynak ve atıf

Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • dmux.github.io/minilake