Sign inSign up

ilum/core

By ilum

•Updated 3 months ago

ILUM Core: Spark orchestration platform for Kubernetes (REST API, Livy, HA)

Image
Integration & delivery
Machine learning & AI
Data science
1

10K+

ilum/core repository overview

⁠Ilum Core

Enterprise Apache Spark orchestration platform for Kubernetes, enabling serverless data processing at scale.

Base Image Architectures


⁠Overview

ilum/core is the central control plane for Ilum — a production-grade Spark orchestration platform designed for Kubernetes-native workloads. It provides a comprehensive REST API to launch, monitor, and manage Apache Spark applications across multiple clusters with enterprise-grade scalability and high availability.

  • Spark Orchestration — launch and manage interactive and single Spark jobs via REST API
  • Apache Livy Compatibility — embedded Livy 0.8.0-compatible REST endpoints for seamless integration
  • Multi-Cluster Support — orchestrate Spark on Kubernetes, YARN, or local clusters from a single control plane
  • Cloud Storage Integration — built-in connectors for AWS S3, Google Cloud Storage, and Azure Blob Storage
  • Observability — OpenLineage integration for data lineage tracking
  • Scalability & HA — stateless architecture with Kafka-based communication for horizontal scaling

⁠TL;DR / Quick Start

# Run Ilum Core (requires MongoDB, Kafka, MinIO)
docker run -d \
  --name ilum-core \
  -p 9000:9000 \

  -e MONGO_URI=mongodb://mongo:27017/ilum \
  -e SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:9092 \
  ilum/core:<version>

Note: For production deployments, use the official Ilum Helm Chart⁠.


⁠Supported Tags

  • <version>: Ilum 6.6.1 + Spark orchestration engine + Java 21

⁠Environment Variables

⁠Infrastructure (Required)
VariableDescription
MONGO_URIMongoDB connection string for metadata storage
SPRING_KAFKA_BOOTSTRAP_SERVERSKafka brokers for inter-service communication
ILUM_STORAGE_MINIO_URLMinIO endpoint for Spark artifacts and logs
ILUM_STORAGE_MINIO_ACCESS_KEYMinIO access key
ILUM_STORAGE_MINIO_SECRET_KEYMinIO secret key
⁠Optional Configuration
VariableDefault ValueDescription
SERVER_PORT9000Ilum Core API port
ILUM_LIVY_PORT9888Apache Livy-compatible gateway port
ILUM_COMMUNICATION_TYPEkafkaCommunication mode: kafka or grpc

NOTE: Using grpc as communication type disables High Availability support. For production deployments with HA requirements, use kafka (default).


⁠Data Persistence (Volumes)

Ilum Core is stateless. All persistent data is stored in external infrastructure components (MongoDB, Kafka, MinIO).

TIP: For disaster recovery, ensure regular backups of MongoDB (metadata) and MinIO (Spark artifacts, event logs).


⁠Network Configuration

PortService
9000Ilum Core REST API + Apache Livy 0.8.0-compatible endpoints
9888gRPC communication (ilum-core ↔ Spark jobs)

⁠Security

⁠Non-root Architecture

The image runs as user ilum (UID 1001). Ensure that mounted volumes have appropriate permissions.

⁠Secret Hygiene

CAUTION: Never pass sensitive credentials directly in environment variables!

Recommended methods:

  1. Kubernetes Secrets — mount MongoDB URI, Kafka credentials, and MinIO keys as secrets.
  2. IAM Roles (IRSA) — use cloud provider identity for storage access when running on managed Kubernetes.
⁠Vulnerability Scanning

Before production deployment, scan the image:

# Trivy
trivy image ilum/core:<version>

⁠Building the Image

Run commands from the root of the ilum-backend repository:

# Build the service
./gradlew clean build

# Build multi-platform Docker image
./gradlew dockerMultiplatformPush

⁠Image Verification

⁠Layer Analysis (Dive)
dive ilum/core:<version>
⁠Software Bill of Materials (SBOM)
# Syft
syft ilum/core:<version> -o spdx-json > sbom.json

⁠Image Contents — Details

⁠Dockerfile Components
  • Base: Eclipse Temurin 21 JRE (via ilum/java:21.0.9_10-jre)
  • Application: Spring Boot REST API (v6.6.1)
  • Spark: Apache Spark 3.x binaries with cloud storage connectors
  • Observability: OpenLineage 1.37.0 for data lineage
  • Kyuubi Support: Kyuubi Spark SQL Engine 1.10.2 for serverless SQL
  • Example Jobs: Pre-packaged PySpark and Scala job examples
⁠Cloud Storage Connectors
  • AWS S3: Hadoop AWS 3.3.4 + AWS SDK Bundle 1.12.262
  • Google Cloud Storage: GCS Connector (Hadoop3) 2.2.13
  • Azure Blob Storage: Hadoop Azure 3.3.4 + Azure Storage 7.0.1

⁠API Documentation

The Ilum Core API is designed with an API-first approach.

Interactive API Documentation:

  • Swagger UI: http://<ilum-core>:9000/docs/api/
  • OpenAPI Spec: Available in the ilum-api-definition module

API Version Compatibility:

API VersionIlum Version
1.0.0<= 6.6.1

⁠Architecture & Features

⁠Job Types
⁠Interactive Jobs

Long-running Spark applications that accept consecutive workload requests without re-initialization overhead. Ideal for:

  • Real-time data exploration
  • Multi-tenant query workloads
  • Serverless SQL via Kyuubi
⁠Single Jobs

Traditional batch Spark jobs submitted via API. Supports:

  • Scheduled ETL pipelines
  • One-off data transformations
  • Integration with external orchestrators (Airflow, Argo Workflows)
⁠Communication Modes
ModeUse CaseHA Support
KafkaProduction deployments requiring scalability and HA✅ Yes
gRPC (default)Development/testing environments, simplified setup❌ No
⁠Cluster Support
  • Kubernetes: Primary target for production workloads
  • YARN: Legacy Hadoop clusters
  • Local: Development and testing only

⁠Infrastructure Dependencies

Ilum Core requires the following components to operate:

  • MongoDB: Metadata storage (clusters, jobs, sessions)
  • Apache Kafka: Event streaming and inter-service communication (when using Kafka mode)
  • MinIO: S3-compatible storage for Spark JARs, Python archives, configuration files, and logs

All dependencies are automatically deployed when using the ilum-aio Helm chart.


⁠Support and Feedback

Tag summary

Content type

Image

Digest

sha256:32104a9b1…

Size

2.3 GB

Last updated

3 months ago

docker pull ilum/core:6.7.3