Modern veri ortamı, yapılandırılmış ve yapılandırılmamış verileri sorunsuz bir şekilde entegre eden, zahmetsizce ölçeklenen ve verimli AI/ML iş yüklerini güçlendiren yeni bir altyapı türü gerektirir. burası
Bu blog gönderisinde mevcut yaklaşımınızı optimize edebilecek üç güçlü araç derinlemesine inceleniyor:
Tabular, Apache Iceberg'in orijinal yaratıcıları tarafından oluşturulan bir veri platformudur. Herhangi bir bilgi işlem katmanına bağlanan bağımsız, evrensel bir depolama platformu sağlamak ve veri sağlayıcısına bağlılığı ortadan kaldırmak üzere tasarlanmıştır. Bu özellik, modern veri yığını için kritik öneme sahiptir; kullanıcıların, belirli bir satıcının eskimiş ve/veya uyumsuz araç setine mecbur kalmadan, sınıfının en iyisi bilgi işlem ve depolama araçlarını seçmelerine olanak tanır.
bir
Bu uygulama Iceberg'in S3FileIO'sundan yararlanır. S3FileIO, çeşitli nedenlerden dolayı Hadoop'un file-io'sundan daha iyi kabul edilir. Bunlardan bazılarını daha önce tartıştık
Bulut Depolama için Optimize Edildi : Iceberg'in S3FileIO'su bulutta yerel depolamayla çalışacak şekilde tasarlanmıştır.
Geliştirilmiş Verim ve En Aza İndirilmiş Kısıtlama: Iceberg,
Sıkı Tutarlılık: Buzdağı
Aşamalı Çok Parçalı Yükleme: Iceberg'in S3FileIO'su,
Sağlama Toplamı Doğrulaması: Iceberg şunları sağlar:
Özel Etiketler: Iceberg eklemeyi destekliyor
Negatif Önbelleğe Almadan Kaçınma: Iceberg'deki FileIO arayüzü, Hadoop uyumlu FileSystem kadar katı garantiler gerektirmez;
Buna karşılık, S3FileIO'dan önce kullanılan Hadoop'un S3A Dosya Sistemi, bulut depolama için aynı seviyede optimizasyon sunmuyor. Bütün bunlar şunu söylüyor: Geleceğe yönelik veri gölü altyapınızı geçmişin tuzaklarıyla aksatmayın.
Başlamadan önce sisteminizin aşağıdaki gereksinimleri karşıladığından emin olun:
Sıfırdan başlıyorsanız, her ikisini de kullanarak yükleyebilirsiniz.
docker-compose --version
Başlamak için YAML dosyasını Tabular'a kopyalayın veya kopyalayın.
Sağlanan YAML dosyası bir Docker Compose yapılandırma dosyasıdır. Çok kapsayıcılı bir Docker uygulaması için bir dizi hizmeti ve bunların yapılandırmalarını tanımlar. Bu durumda iki hizmet vardır: Spark-Iceberg ve MinIO. Her bölümü parçalayalım:
1. Kıvılcım-Buzdağı Hizmeti:
spark-iceberg: image: tabulario/spark-iceberg container_name: spark-iceberg build: spark/ networks: iceberg_net: depends_on: - rest - minio volumes: - ./warehouse:/home/iceberg/warehouse - ./notebooks:/home/iceberg/notebooks/notebooks environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 ports: - 8888:8888 - 8080:8080 - 10000:10000 - 10001:10001 rest: image: tabulario/iceberg-rest container_name: iceberg-rest networks: iceberg_net: ports: - 8181:8181 environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 - CATALOG_WAREHOUSE=s3://warehouse/ - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO - CATALOG_S3_ENDPOINT=http://minio:9000
image: Kıvılcım buzdağı hizmeti için kullanılacak Docker görüntüsünü belirtir. Bu durumda tabulario/spark-iceberg:en son görüntüyü kullanır.
Depend_on: Spark-iceberg hizmetinin dinlenme ve minio hizmetlerine bağlı olduğunu belirtir.
Container_name: Konteynere belirli bir isim (kıvılcım-buzdağı) atar.
ortam: Spark ve AWS kimlik bilgileri de dahil olmak üzere konteyner için ortam değişkenlerini ayarlar.
hacimler: Yerel dizinleri (./warehouse ve ./notebooks) konteynerin içine birimler olarak bağlar.
portlar: Spark kullanıcı arayüzüne ve diğer hizmetlere erişim için konteyner bağlantı noktalarını ana bilgisayar bağlantı noktalarına eşler.
2. Minio Hizmeti:
minio: image: minio/minio container_name: minio environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=password - MINIO_DOMAIN=minio networks: iceberg_net: aliases: - warehouse.minio ports: - 9001:9001 - 9000:9000 command: ["server", "/data", "--console-address", ":9001"]
image: MinIO hizmeti için Docker görüntüsünü belirtir.
Container_name: Container'a belirli bir isim (MinIO) atar.
ortam: Kök kullanıcı kimlik bilgileri de dahil olmak üzere MinIO'yu yapılandırmak için ortam değişkenlerini ayarlar.
bağlantı noktaları: MinIO kullanıcı arayüzüne erişim için konteyner bağlantı noktalarını ana bilgisayar bağlantı noktalarına eşler.
komut: MinIO sunucusunu belirli parametrelerle başlatma komutunu belirtir.
MinIO hizmetinin bir başka yönü de
mc: depends_on: - minio image: minio/mc container_name: mc networks: iceberg_net: environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 entrypoint: > /bin/sh -c " until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done; /usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
Depend_on: mc hizmetinin MinIO hizmetine bağlı olduğunu belirtir.
image: mc hizmeti için Docker görüntüsünü belirtir.
konteyner_adı: Konteynere belirli bir ad (mc) atar.
ortam: MinIO istemcisini yapılandırmak için ortam değişkenlerini ayarlar.
giriş noktası: MinIO istemcisi için kurulum adımları da dahil olmak üzere konteyner için giriş noktası komutunu tanımlar.
/usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
Bu komut dizisi esas olarak aşağıdaki görevleri yerine getirir:
Mevcut depo dizinini ve içeriğini MinIO sunucusundan kaldırır.
Ambar adında yeni bir paket oluşturur.
Ambar paketinin erişim ilkesini genel olarak ayarlar.
Bu Docker Compose dosyası, Spark, PostgreSQL, MinIO hizmetleriyle çok kapsayıcılı bir ortamı düzenler. Hizmetlerin birlikte çalıştırılması için gerekli bağımlılıkları, ortam değişkenlerini ve komutları ayarlar. Hizmetler, Spark ve Iceberg'i kullanarak nesne depolama arka ucu olarak MinIO'yu kullanarak veri işleme için bir geliştirme ortamı oluşturmak üzere birlikte çalışır.
Bir terminal penceresinde, depodaki tabular-spark-setup dizinine cd yazın ve aşağıdaki komutu çalıştırın:
docker-compose up
Depo paketinin oluşturulduğunu görmek için http://127.0.0.1:9001
adresinden admin:password
kimlik bilgileriyle MinIO'da oturum açın.
Tüm kapsayıcılar çalışır duruma geldiğinde, http://localhost:8888
adresine giderek Jupyter Notebook sunucunuza erişebilirsiniz.
Örnek not defterlerinden birini çalıştırın ve deponuzun verilerle dolu olduğunu görmek için http://127.0.0.1:9001
adresinden MinIO'ya dönün.
Iceberg, Tabular ve MinIO ile modern bir datalake oluşturmaya yönelik bu eğitim yalnızca başlangıçtır. Bu güçlü üçlü, olasılıklar dünyasının kapılarını açıyor. Bu araçlarla, gizli kalıpları ortaya çıkarmak ve yeniliği teşvik eden veri odaklı kararları desteklemek için yapılandırılmış ve yapılandırılmamış tüm verilerinizi sorunsuz bir şekilde entegre edebilir ve analiz edebilirsiniz. AI/ML girişimlerinizi hızlandırmak ve makine öğrenimi modellerinizin gerçek potansiyelini ortaya çıkarmak için üretimde bu mimarinin verimliliğinden ve esnekliğinden yararlanın ve çığır açan keşiflere giden yolunuzu hızlandırın. Bize ulaşın