ILUM Spark: hardened Spark images with cloud connectors, Delta Lake, and security-first DHI variant
10K+
Production-ready Apache Spark images with pre-installed cloud connectors, data lakehouse integrations, and Kubernetes optimization.
ilum/spark is Ilum's production-hardened Apache Spark image optimized for Kubernetes deployments. It extends the official Apache Spark image with:
PIP_MODULES environment variable# Run Spark shell with cloud storage access
docker run -it --rm \
-e AWS_ACCESS_KEY_ID=your-key \
-e AWS_SECRET_ACCESS_KEY=your-secret \
ilum/spark:3.5.7 \
/opt/spark/bin/spark-shell
# Run as Kubernetes driver/executor
docker run -d \
ilum/spark:3.5.7 driver \
--master k8s://https://k8s-api:6443 \
--class com.example.MyApp \
s3a://bucket/app.jar
Note: For Ilum-managed Spark clusters, use the official Ilum Helm Chart.
| Tag | Spark | Scala | Java | Description |
|---|---|---|---|---|
3.5.7, latest | 3.5.7 | 2.12 | 17 | Full image with cloud + Delta + Kyuubi + OpenLineage |
3.5.7-delta | 3.5.7 | 2.12 | 17 | Additional Delta Lake JARs |
3.5.3 | 3.5.3 | 2.12 | 17 | Previous 3.5.x release |
3.4.1 | 3.4.1 | 2.12 | 11 | Legacy Spark 3.4 series |
| Tag Suffix | Based On | Additional Components |
|---|---|---|
-dhi | DHI Spark | Security-hardened (see below) |
-delta | 3.5.7 | Delta Lake 3.3.2 (redundant - already in main) |
-iceberg | 3.5.7 | Apache Iceberg 1.10.1 |
-hudi | 3.5.7 | Apache Hudi 1.1.1 |
-nessie | 3.5.7-delta | Nessie 0.104.3 + Iceberg 1.9.2 (for data versioning) |
-sedona | 3.5.7-delta | Apache Sedona 1.8.0 (geospatial) |
-unity | 3.5.7-delta | Unity Catalog 0.2.1 |
-clean-spark | apache/spark | Cloud + Kyuubi + OpenLineage (without Delta) |
For enterprise deployments requiring maximum security, use the -dhi tag:
docker pull ilum/spark:3.5.7-dhi
DHI (Data & AI Hardened Images) is a Spark distribution built on Wolfi OS — a security-first, distroless Linux designed for containers.
| Feature | DHI | Standard |
|---|---|---|
| Base OS | Wolfi (distroless) | Ubuntu |
| Runtime User | nonroot (UID 65532) | spark |
| Shell Access | No shell (/bin/sh removed) | Available |
| Package Manager | None (attack surface minimized) | apt |
| CVE Scan Results | Near-zero vulnerabilities | Typical Ubuntu CVEs |
| SBOM | Built-in (SPDX) | Manual generation |
| Image Size | ~40% smaller | Standard |
The DHI variant includes all standard Ilum customizations:
# Kubernetes deployment
spec:
containers:
- name: spark-driver
image: ilum/spark:3.5.7-dhi
securityContext:
runAsNonRoot: true
runAsUser: 65532
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
| Category | JARs | Version |
|---|---|---|
| AWS S3 | hadoop-aws, aws-java-sdk-* | 3.3.4, 1.12.262 |
| Google Cloud Storage | gcs-connector | hadoop3-2.2.13 |
| Azure Blob Storage | hadoop-azure, azure-storage, jetty-util | 3.3.4, 7.0.1 |
| Kyuubi | kyuubi-extension, kyuubi-spark-lineage, kyuubi-util | 1.10.2 |
| OpenLineage | openlineage-spark | 1.40.1 |
| Delta Lake | delta-spark, delta-storage | 3.3.2 |
| Spark Connect | spark-connect | 3.5.7 |
grpcio pandas delta-spark==3.3.2 pyspark[sql,connect]==3.5.7
The entrypoint.sh provides:
Dynamic pip installation — install modules at runtime:
docker run -e PIP_MODULES="numpy;scikit-learn" ilum/spark:3.5.7 driver ...
Kubernetes modes — driver and executor commands for K8s deployments
tini init — proper signal handling in containers
| Variable | Description |
|---|---|
| AWS_ACCESS_KEY_ID | AWS credentials for S3 |
| AWS_SECRET_ACCESS_KEY | AWS secret key |
| GOOGLE_APPLICATION_CREDENTIALS | Path to GCS service account JSON |
| AZURE_STORAGE_ACCOUNT | Azure storage account |
| AZURE_STORAGE_KEY | Azure storage key |
| Variable | Default | Description |
|---|---|---|
| PIP_MODULES | - | Semicolon-separated pip packages to install at startup |
| SPARK_EXECUTOR_MEMORY | - | Executor memory (e.g., 4g) |
| SPARK_EXECUTOR_CORES | - | Executor cores |
| SPARK_DRIVER_BIND_ADDRESS | - | Driver bind address for K8s |
| Container Path | Purpose |
|---|---|
/opt/spark/work-dir | Working directory for Spark applications |
/opt/spark/conf | Custom Spark configuration files |
| Port | Service |
|---|---|
4040 | Spark UI (driver) |
7077 | Spark master (standalone mode) |
15002 | Spark Connect server |
The image runs as spark user (UID defined by spark_uid). Root is used only during build for JAR installation.
CAUTION: Never hardcode cloud credentials!
Use Kubernetes Secrets:
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: aws-credentials
key: access-key
trivy image ilum/spark:3.5.7
cd ilum-ops/docker/ilum-spark-docker
docker buildx build --platform linux/amd64,linux/arm64 \
-t ilum/spark:3.5.7 --push .
cd custom
# Iceberg variant
docker buildx build --platform linux/amd64,linux/arm64 \
-t ilum/spark:3.5.7-iceberg -f Dockerfile-iceberg --push .
# Sedona variant
docker buildx build --platform linux/amd64,linux/arm64 \
-t ilum/spark:3.5.7-sedona -f Dockerfile-sedona --push .
When deployed via Ilum:
Content type
Image
Digest
sha256:fbd2fc17d…
Size
2.9 GB
Last updated
3 months ago
docker pull ilum/spark:4.1.2-nessie