How-To Guides

Apache Superset Dağıtımı: Modern Veri Ekibleri İçin Kapsamlı Kılavuz

Apache Superset, günümüzde mevcut en güçlü ve popüler açık kaynaklı iş zekası (BI) araçlarından biri haline geldi. Modern arayüzü, kapsamlı görselleştirme seçenekleri ve geniş bir SQL veritabanı yelpazesiyle uyumluluğuyla tanınır; veri mühendisleri ve analistler için organizasyonları içinde veri erişimini demokratikleştirmeye çalışanlar için ideal bir seçenektir. Ancak, Flask uygulaması, Celery işçileri ve bir meta veritabanı gibi birden fazla bileşeni içeren karmaşık mimarisi nedeniyle, Superset'i üretim ortamında kurmak göz korkutucu olabilir.

Bu kılavuzda, Apache Superset'i Docker Compose kullanarak dağıtmanıza adım adım rehberlik edeceğiz. Bu yöntem, ana sisteminizi karmaşadan arındırmadan tekrarlanabilir, izole ve ölçeklenebilir bir ortam sağladığı için orta düzeyden ileri düzey geliştiriciler için önerilir. Bu yazının sonunda, yerel olarak veya uzak bir sunucuda çalışan tam işlevsel bir Superset örneğine sahip olacaksınız.

Ön Koşullar ve Ortam Kurulumu

Dağıtım sürecine başlamadan önce, geliştirme ortamınızın aşağıdaki gereksinimleri karşıladığından emin olun:

  • Docker & Docker Compose: Her ikisinin de yüklü ve çalışır durumda olduğundan emin olun. Bunu docker --version ve docker-compose --version komutlarını çalıştırarak doğrulayabilirsiniz.
  • PostgreSQL: Superset, meta verileri için ilişkisel bir veritabanına ihtiyaç duyar. Docker Compose bir Postgres kabuğu başlatabilse de, üretim ortamında yönetilen bir hizmet veya bağımsız bir veritabanı örneği kullanmalısınız.
  • Redis: Önbellekleme ve Celery görevleri için sonuç arka ucu olarak kullanılır.
  • Flask Uygulaması: Temel Superset uygulaması.

Bu öğretinin amacı doğrultusunda, tüm gerekli hizmetleri içeren monolitik bir Docker Compose yapılandırması kullanacağız. Bu, geliştirme ve önizleme (staging) ortamları için mükemmeldir.

Docker Compose Yapılandırmasının Oluşturulması

Projeniz için yeni bir dizin oluşturun ve bir docker-compose.yml dosyası başlatın. Bu dosya, Superset'in doğru çalışması için gereken hizmetleri, ağları ve hacimleri tanımlar.

version: '3.8'
services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    networks:
      - superset_network

  postgres:
    image: postgres:13
    environment:
      POSTGRES_USER: superset
      POSTGRES_PASSWORD: superset_pass
      POSTGRES_DB: superset
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    networks:
      - superset_network

  superset:
    image: apache/superset:latest
    restart: always
    ports:
      - "8088:8088"
    command: ["/app/docker/docker-entrypoint.sh"]
    environment:
      SUPERSET_SECRET_KEY: 'super-secret-key-for-production'
      DATABASE_HOST: postgres
      DATABASE_PORT: 5432
      DATABASE_USER: superset
      DATABASE_PASSWORD: superset_pass
      DATABASE_DB: superset
    volumes:
      - superset_data:/app/superset_home
    depends_on:
      - redis
      - postgres
    networks:
      - superset_network

volumes:
  postgres_data:
  superset_data:

networks:
  superset_network:
    driver: bridge

Başlatma ve Kullanıcı Oluşturma

docker-compose.yml dosyanız hazır olduğunda, aşağıdaki komutu kullanarak hizmetleri başlatın:

docker-compose up -d

Konteynerler çalışmaya başladıktan sonra veritabanını başlatmanız ve bir yönetici kullanıcı oluşturmanız gerekir. Terminalinizde aşağıdaki komutları çalıştırın:

# Veritabanı şemasını başlat
docker-compose exec superset superset db upgrade

# Bir yönetici kullanıcı oluştur
docker-compose exec superset superset fab create-admin \
  --username admin \
  --firstname Admin \
  --lastname User \
  --email admin@example.com \
  --password admin

superset fab create-admin komutu, ilk dağıtımınızı güvence altına almak için hayati önem taşır. superset db upgrade komutu, veritabanı şemasının çalıştırdığınız Superset sürümüyle güncel olduğundan emin olur.

Üretim Düşünceleri

Yukarıdaki kurulum geliştirme için mükemmel olsa da, üretim dağıtımları ek güvenlik önlemleri gerektirir:

  • Güvenlik: Asla varsayılan gizli anahtarları kullanmayın. SUPERSET_SECRET_KEY için güçlü ve rastgele bir anahtar oluşturun.
  • Ters Proxy: SSL sonlandırma ve yük dengeleme işlemlerini yönetmek için Superset'in önüne Nginx veya Traefik yerleştirin.
  • Veritabanı Ayrımı: Yüksek kullanılabilirlik ve veri kalıcılığını sağlamak için Postgres ve Redis konteynerlerini harici, yönetilen hizmetlere taşıyın.
  • Ölçekleme: Yük bazında superset ve celery-worker hizmetlerini bağımsız olarak ölçeklendirmek için yatay pod ölçeklendirmesini (Kubernetes) veya Docker Swarm kullanın.

Sonuç

Docker Compose aracılığıyla Apache Superset dağıtmak, geliştiricilerin hızlıca çalışmaya başlamasını sağlayan akıcı bir süreçtir. Konteynerleştirmeden yararlanarak, geliştirme, önizleme ve üretim ortamları arasında tutarlılık sağlarsınız. Veri ihtiyaçlarınız büyüdükçe, mimarinizi ayrı veritabanı örnekleri, sağlam önbellekleme stratejileri ve güvenli ters proxy'ler içerecek şekilde yeniden düzenlemeyi unutmayın. Superset dağıtıldığında, ekibiniz sezgisel ve güçlü görselleştirmeler aracılığıyla verilerinizin tam potansiyelini ortaya çıkarmaya hazırdır.

Share: