paint-brush
Data Lake'in Gizemleri Ortaya Çıktı: Nessie, Dremio ve MinIO Dalga Yaratıyorile@minio
8,080 okumalar
8,080 okumalar

Data Lake'in Gizemleri Ortaya Çıktı: Nessie, Dremio ve MinIO Dalga Yaratıyor

ile MinIO6m2024/02/22
Read on Terminal Reader

Çok uzun; Okumak

Bu makale, veri mühendisliği iş akışlarınızda veri kalitesini ve işbirliğini geliştirmek için Nessie, Dremio ve MinIO'nun birlikte nasıl çalıştığını gösteren adım adım bir kılavuz sağlar.
featured image - Data Lake'in Gizemleri Ortaya Çıktı: Nessie, Dremio ve MinIO Dalga Yaratıyor
MinIO HackerNoon profile picture


Birçoğumuz daha sonra gelişen gereksinimlere dayanarak verilerde değişiklikler yaptık. Bunu anladığımızda geriye dönmemiz imkansız hale gelir. Değişim sadece sabit değildir; karmaşık bir yaklaşım gerektiren verileri yönetmenin önemli bir parçasıdır. Dremio'nun veri kataloğu Nessie'nin Git benzeri işlevselliğine girin.


Git'in yazılım geliştirmenin temeli haline gelmesi gibi, veri mühendisleri de paralel çalışmak, veri sürümlerini karşılaştırmak, üretimdeki değişiklikleri desteklemek ve gerektiğinde verileri geri almak için benzer araçlara ihtiyaç duyar. Nessie, veri mühendislerine veri sürümlerini, dalları, birleştirmeleri ve taahhütleri yönetmek için Git benzeri bir sürüm kontrol sistemi sağlar. Bu, birden fazla veri mühendisinin aynı anda verilerle çalıştığı ve verileri dönüştürdüğü durumlarda çok yararlı olabilir. Nessie, ana dal biçiminde tek bir doğruluk kaynağı sağlarken her mühendisin ayrı dallarda çalışmasına olanak tanır. Bu işlevsellik, veri mühendisliği ekiplerine, aralıksız değişim karşısında veri kalitesini işbirliği içinde koruma gücü verir.


Bu makale, veri mühendisliği iş akışlarınızda veri kalitesini ve işbirliğini geliştirmek için Nessie, Dremio ve MinIO'nun birlikte nasıl çalıştığını gösteren adım adım bir kılavuz sağlar. İster bir veri mühendisi, ister makine öğrenimi mühendisi, ister yalnızca modern bir veri gölü meraklısı olun, bu blog sizi veri sürümü oluşturma uygulamalarınızı etkili bir şekilde geliştirmek için gereken bilgi ve araçlarla donatır.

Temelleri Anlamak: Nessie İş Yükleri

Nessie, test etmenize, geliştirmenize ve üretime aktarmanıza olanak tanıyan Git benzeri iş yüklerine olanak tanır. Bazı temel kavramları inceleyelim:


  • Şubeler: Tıpkı Git'te olduğu gibi Nessie'deki şubeler de farklı veri mühendisliği görevleri üzerinde aynı anda çalışmanıza olanak tanır. Örneğin özellik geliştirme, veri temizleme ve veri dönüşümüne yönelik bir şubeniz olabilir. Her dalın kendi veri değişiklikleri kümesi olabilir.


  • Taahhütler: Nessie'de taahhüt, verilerin belirli bir andaki anlık görüntüsünü temsil eder. Verilerinizde değişiklik yaptığınızda, bu değişiklikleri kaydeden yeni bir taahhüt oluşturursunuz. Taahhütler belirli bir şubeye bağlıdır. Verilerinizi kararlı veya iyi olduğu bilinen bir duruma döndürmeniz gerektiğinde Nessie, belirli bir işlemi seçip o veri sürümüne geri dönmeyi kolaylaştırır. Bu, veri kalitesini ve tutarlılığını sağlar.


  • Birleştirmeler : Nessie, değişiklikleri bir daldan diğerine birleştirmenize olanak tanır. Bu, Git'teki kod değişikliklerini birleştirmeye benzer. Bir dalı birleştirdiğinizde o dalda yapılan veri değişiklikleri hedef dalın parçası haline gelir.

Bileşenler



Dremio , açık kaynaklı bir platform olarak çalışan, veri keşfi, dönüşümü ve işbirliğine dayalı çalışma için sezgisel bir self-servis arayüz sunan dağıtılmış bir analiz motorudur. Tasarımı temel alınmıştır Apaçi Ok, yüksek hızlı sütunlu bellek formatı.


Dremio'nun Kubernetes ile nasıl dağıtılacağını ve ayrıca nasıl kurulacağını zaten araştırdık. Dremio ile MinIO'daki Iceberg tablolarını sorgulama . Dremio hakkında ek bilgi için bkz. Dremio Kaynakları .


MinIO, yüksek performanslı nesne depolamadır. Olağanüstü olmasıyla ünlü hız Ve ölçeklenebilirlik MinIO, modern veri gölü altyapılarının oluşturulması ve sürdürülmesinde önemli bir bileşen olarak hizmet vermektedir. MinIO, mimarlara büyük hacimli verileri şirket içinde, çıplak donanımda, uçta veya genel bulutlardan herhangi birinde verimli bir şekilde yönetme ve depolama olanağı sağlar.


Apaçi Buzdağı veri göllerindeki büyük hacimli verileri yönetmek için uygun bir açık tablo formatıdır. Zaman yolculuğu, dinamik şema gelişimi ve Partition Evolution gibi benzersiz özellikler, sorgu motorlarının aynı veriler üzerinde güvenli ve verimli bir şekilde eşzamanlı olarak çalışmasına olanak tanıyarak onu ezber bozan bir hale getiriyor. Görmek Buzdağı ve MinIO ile Göl Evi Mimarisinin Kesin Kılavuzu Buzdağının özellikleri hakkında daha fazla bilgi için.

Başlarken

İhtiyacınız olacak Docker Motoru Ve Docker Oluşturma Bu eğitim için. Henüz sahip değilseniz, her ikisini de edinmenin en kolay yolu Docker Desktop'ı yüklemektir.


Öğreticinin bu kısmı Dremio'nun Blog yazısı . Bu proje için repoyu alabilirsiniz Burada .


Başlamak için bir terminal açın ve repoyu kopyaladığınız/indirdiğiniz klasöre gidin ve Dremio'yu başlatmak için aşağıdaki komutu çalıştırın.


 docker-compose up dremio


Birkaç dakika bekleyin ve ardından Dremio'ya erişmek için http://localhost:9047 adresine gidin. İstenen alanları güncelleyin ve ardından İleri'ye tıklayın.



Daha sonra MinIO'yu başlatmak için aşağıdaki komutu çalıştırın.


 docker-compose up minio


Aşağıdaki son docker-compose up komutu Nessie'yi başlatacaktır.


 docker-compose up nessie


minioadmin:minioadmin kullanıcı adı ve şifresiyle MinIO'da oturum açmak için http://localhost:9001 adresine gidin. Bir paket oluşturmanız istenecektir.



iceberg-datalake adında bir tane yapın.



Daha sonra http://localhost:9047 adresinden Dremio'ya geri dönün ve Kaynak Ekle'ye tıklayın ve Nessie'yi seçin.



  • Adı nessie olarak ayarlayın
  • Uç nokta URL'sini http://nessie:19120/api/v2 olarak ayarlayın
  • none olarak ayarlayın



Henüz Kaydet'e tıklamayın. Bunun yerine soldaki gezinme panelinde Depolama'yı tıklayın. MinIO, S3-API uyumlu nesne depolamadır ve AWS S3 ile aynı bağlantı yollarını kullanabilir.


  • Erişim anahtarınız için minioadmin ayarlayın
  • Gizli anahtarınız için minioadmin ayarlayın
  • Kök yolunu /iceberg-datalake olarak ayarlayın



Sonraki talimat seti için aşağı kaydırın.

  • Aşağıdaki özellikleri oluşturmak ve yapılandırmak için Connection Properties altındaki Add Property düğmesine tıklayın.
    • fs.s3a.path.style.access true olması
    • fs.s3a.endpoint minio:9000
    • dremio.s3.compat true çevirme
    • Encrypt connection işaretini kaldırın



Daha sonra Kaydet'e tıklayın. Artık veri kaynaklarınızda Nessie Kataloglarını görmelisiniz.



Veri Kaynağı Oluşturun

Dremio'da sol taraftaki SQL Runner'a gidin. Metin düzenleyicinin sağ üst kısmındaki Context Nessie kaynağımıza ayarlandığından emin olun. Aksi takdirde, bu sorguyu çalıştırmak için yalnızca SalesData yerine nessie.SalesData gibi bağlama başvurmanız gerekecektir. Aşağıdaki SQL'i kopyalayıp yapıştırın ve çalıştırın.


 CREATE TABLE SalesData (    id INT,    product_name VARCHAR,    sales_amount DECIMAL,    transaction_date DATE ) PARTITION BY (transaction_date); 



Yeni oluşturduğunuz tabloya veri eklemek için aşağıdaki sorguyu çalıştırın.


 INSERT INTO SalesData (id, product_name, sales_amount, transaction_date) VALUES    (1, 'ProductA', 1500.00, '2023-10-15'),    (2, 'ProductB', 2000.00, '2023-10-15'),    (3, 'ProductA', 1200.00, '2023-10-16'),    (4, 'ProductC', 1800.00, '2023-10-16'),    (5, 'ProductB', 2200.00, '2023-10-17'); 



Veri gölünüzün Buzdağı tablolarıyla doldurulduğunu görmek için MinIO'ya geri dönün.


Nessie ile Dallanma ve Birleşme

http://localhost:9047 adresinden Dremio'ya dönün. AT BRANCH sözdizimini kullanarak ana daldaki bir tabloyu sorgulayarak başlayın:


 SELECT * FROM nessie.SalesData AT BRANCH main; 



Üretimi etkilemeden verilerle oynamanıza ve verileri dönüştürmenize olanak tanıyan bir ETL (Çıkartma Dönüştürme ve Yükleme) dalı oluşturun.


 CREATE BRANCH etl_06092023 in nessie


ETL şubesi içinde tabloya yeni veriler ekleyin:

 USE BRANCH etl_06092023 in nessie; INSERT INTO nessie.SalesData (id, product_name, sales_amount, transaction_date) VALUES (6, 'ProductC', 1400.00, '2023-10-18');


Yeni verilerin ETL şubesinde anında kullanılabilirliğini doğrulayın:

 SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;


Değişikliklerin ana daldaki kullanıcılardan izolasyonuna dikkat edin:

 SELECT * FROM nessie.SalesData AT BRANCH main;


ETL şubesindeki değişiklikleri tekrar ana şubeye birleştirin:

 MERGE BRANCH etl_06092023 INTO main in nessie;


Değişikliklerin gerçekten birleştirildiğini görmek için ana dalı tekrar seçin.

 SELECT * FROM nessie.SalesData AT BRANCH main


Bu dallanma stratejisi, veri mühendislerinin birden fazla tablodaki çok sayıda işlemi bağımsız olarak yönetmesine olanak tanır. Hazır olduklarında, veri mühendisleri bu işlemleri ana şube içerisinde tek ve kapsamlı çok tablolu bir işlemde birleştirebilir.

Çözüm

Bu blog gönderisi, veri mühendisliğinde Git benzeri sürüm kontrolünün gücünü derinlemesine inceleyerek nasıl olduğunu vurguladı. Nessie veri sürümlerini, dallanmaları ve birleştirmeleri sorunsuz bir şekilde yönetir. Bu adım adım kılavuz, Nessie'nin nesne depolama temeli olarak Dremio ve MinIO ile işbirliği içinde veri mühendisliği iş akışlarında veri kalitesini ve işbirliğini nasıl geliştirdiğini gösterir.


Veri göl evinizin neye benzediğini bize bildirin [email protected] veya üzerinde Slack kanalımız .


Ayrıca burada görünür.