How-To Guides

نشر Apache Superset: دليل شامل لففرق البيانات الحديثة

أصبح Apache Superset أحد أقوى أدوات ذكاء الأعمال (BI) مفتوحة المصدر وأكثرها شعبية المتاحة اليوم. ومعروف بواجهته الحديثة وخيارات التصور الواسعة وتوافقه مع مجموعة واسعة من قواعد بيانات SQL، فهو خيار مثالي لمهندسي البيانات والمحللين الذين يسعون إلى ديمقراطية الوصول إلى البيانات داخل مؤسساتهم. ومع ذلك، قد يكون إعداد Superset في بيئة إنتاجية أمرًا شاقًا نظرًا لبنيتها المعقدة، التي تتضمن مكونات متعددة مثل تطبيق Flask، وعاملات Celery، وقاعدة بيانات للمعلومات الوصفية.

في هذا الدليل، سنرشدك خلال نشر Apache Superset باستخدام Docker Compose. يُوصى بهذه الطريقة للمطورين من المستوى المتوسط إلى المتقدم لأنها توفر بيئة قابلة للتكرار ومعزولة وقابلة للتوسع دون إرباك نظام المضيف الخاص بك. بنهاية هذا المنشور، سيكون لديك مثيل Superset يعمل بشكل كامل محليًا أو على خادم عن بُعد.

المتطلبات المسبقة وإعداد البيئة

قبل الغوص في عملية النشر، تأكد من أن بيئة التطوير الخاصة بك تلبي المتطلبات التالية:

  • Docker و Docker Compose: تأكد من تثبيتهما وتشغيلهما. يمكنك التحقق من ذلك عن طريق تشغيل docker --version و docker-compose --version.
  • PostgreSQL: يتطلب Superset قاعدة بيانات علائقية للمعلومات الوصفية الخاصة به. بينما يمكن لـ Docker Compose تشغيل حاوية Postgres، في بيئة الإنتاج، يجب عليك استخدام خدمة مُدارة أو مثيل قاعدة بيانات مستقل.
  • Redis: يُستخدم للتخزين المؤقت وكخلفية نتائج لمهام Celery.
  • تطبيق Flask: التطبيق الأساسي لـ Superset.

لأغراض هذا البرنامج التعليمي، سنستخدم تكوين Docker Compose أحادي الكتلة (monolithic) يتضمن جميع الخدمات اللازمة. هذا مثالي لبيئات التطوير والاختبار.

إنشاء تكوين Docker Compose

أنشئ دليلًا جديدًا لمشروعك وقم بتهيئة ملف docker-compose.yml. يحدد هذا الملف الخدمات والشبكات والأحجام المطلوبة ليعمل Superset بشكل صحيح.

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

التهيئة وإنشاء المستخدم

بمجرد أن يكون ملف docker-compose.yml جاهزًا، قم بتشغيل الخدمات باستخدام الأمر التالي:

docker-compose up -d

بعد تشغيل الحاويات، تحتاج إلى تهيئة قاعدة البيانات وإنشاء مستخدم مسؤول. نفذ الأوامر التالية في طرفية الأوامر (terminal):

# تهيئة مخطط قاعدة البيانات
docker-compose exec superset superset db upgrade

# إنشاء مستخدم مسؤول
docker-compose exec superset superset fab create-admin \
  --username admin \
  --firstname Admin \
  --lastname User \
  --email admin@example.com \
  --password admin

يعد أمر superset fab create-admin أمرًا حاسمًا لتأمين نشرك الأولي. يضمن أمر superset db upgrade أن مخطط قاعدة البيانات محدث مع إصدار Superset الذي تقوم بتشغيله.

اعتبارات الإنتاج

بينما يعد الإعداد المذكور أعلاه ممتازًا للتطوير، فإن نشرات الإنتاج تتطلب تشديدًا إضافيًا:

  • الأمان: لا تستخدم أبدًا مفاتيح سرية افتراضية. قم بتوليد مفتاح قوي وعشوائي لـ SUPERSET_SECRET_KEY.
  • عكس الوكيل (Reverse Proxy): ضع Nginx أو Traefik أمام Superset للتعامل مع إنهاء SSL وتوازن الحمل.
  • فصل قاعدة البيانات: انقل حاويات Postgres و Redis إلى خدمات خارجية ومُدارة لضمان التوفر العالي واستمرارية البيانات.
  • التوسع: استخدم التوسع الأفقي للعقد (Kubernetes) أو Docker Swarm لتوسيع نطاق خدمات superset و celery-worker بشكل مستقل بناءً على الحمل.

الخاتمة

يعد نشر Apache Superset عبر Docker Comset عملية مبسطة تتيح للمطورين البدء بسرعة. من خلال الاستفادة من الحاويات، تضمن الاتساق عبر بيئات التطوير والاختبار والإنتاج. مع نمو احتياجاتك من البيانات، تذكر إعادة هندسة بنيتك لتشمل مثيلات قاعدة بيانات منفصلة، واستراتيجيات تخزين مؤقت قوية، ووكلاء عكسيين آمنين. مع نشر Superset، تكون فريقك في وضع جيد لكشف الإمكانات الكاملة لبياناتك من خلال تصورات بديهية وقوية.

Share: