मुख्य विषयवस्तु में जाएं

आरंभ

This guide covers deploying Ilum on Kubernetes and submitting your first Spark job.

Installation Architecture

Ilum follows a modular architecture where core platform services are separated from optional engines, catalogs, and integrations. The base installation provides:

  • इलम कोर: Main backend (REST API, jobs, multi-engine SQL, lineage, security)
  • इलम यूआई: Web frontend (SQL Editor, Table Explorer, Lineage, Workloads)
  • ilum-api: Module-management microservice that installs, upgrades, and disables optional modules at runtime via Helm
  • Apache Spark 4.x job orchestration on Kubernetes
  • डकडीबी for local-first SQL analytics, with the DuckLake catalog enabled by default
  • हाइव मेटास्टोर for centralized table metadata
  • पोस्टग्रेएसक्यूएल as the primary metadata store (MongoDB remains supported for legacy deployments)
  • मिनियो (default) or RustFS (opt-in; planned default in 6.8.0) S3-compatible object storage. See Object Storage in Ilum.
  • Apache Kyuubi SQL gateway for multi-engine query routing
  • मार्केज़ for OpenLineage-based data lineage (default-on)
  • बृहस्पति notebook integration
  • REST API for programmatic access

Optional modules enable additional engines, catalogs, and integrations:

  • Engines: Trino, Apache Flink
  • कैटलॉग: Project Nessie, Unity Catalog
  • नोटबुक: JupyterHub (Enterprise), Apache Zeppelin
  • वाद्यवृंदकरण: Apache Airflow, Kestra, Mage, n8n, Apache NiFi
  • BI and visualization: Apache Superset, Streamlit
  • AI and ML: MLflow, LangFuse
  • अवलोकन योग्यता: Kube Prometheus stack, Loki, Promtail
  • Identity: Ory Hydra (Ilum as IdP), OpenLDAP

Resource Planning:

  • Base deployment: 8-12 GB RAM, 6 CPU cores
  • With Hive Metastore, Marquez lineage, Kyuubi, and PostgreSQL: 18 GB RAM, 12 CPU cores
  • Production workloads: Size based on concurrent executor requirements across all enabled engines

Module selection impacts pod count, storage IOPS, and network traffic. Each module runs in dedicated pods with configurable resource limits.

आवश्यकताएँ

अपनी मशीन पर Ilum चलाने के लिए, आपको निम्नलिखित की आवश्यकता होगी:

कुबेरनेट्स क्लस्टर

Ilum deploys exclusively on Kubernetes using Helm charts. Any CNCF-compliant Kubernetes distribution works:

Supported Platforms:

  • Local development: Minikube, Microk8s, K3s, Docker Desktop
  • Cloud-managed: GKE, EKS, AKS, DigitalOcean Kubernetes
  • Self-hosted: K8s on bare metal, OpenShift, Rancher

Architecture Support:

  • Multi-arch container images (amd64, arm64)
  • Tested on Linux, macOS (M1/M2), Windows WSL2

Quick Local Setup: For development/testing without an existing cluster, use Minikube (इंस्टालेशन गाइड) or Microk8s (इंस्टालेशन गाइड).

This guide uses Minikube for examples. Verify installation with:

minikube version

Windows OS पर Minikube के साथ समस्याएँ

यदि आप Windows का उपयोग कर रहे हैं, तो आपको ड्राइवर से संबंधित Minikube के साथ समस्याएँ आ सकती हैं।

विंडोज़ पर, मिनिक्यूब विभिन्न प्रकार के ड्राइवरों (कुबेरनेट्स क्लस्टर के लिए होस्ट) में से चुन सकता है, हालांकि आम तौर पर आप या तो उपयोग करना चाहते हैं हाइपर-V नहीं तो बंदरगाह-मज़दूर. यदि आपके पास डॉकर स्थापित है, आपको या तो डॉकर ड्राइवर के साथ मिनिक्यूब का उपयोग करना चाहिए या डॉकर डेस्कटॉप में अंतर्निहित कुबेरनेट्स समर्थन को सक्षम करना चाहिए।

यदि आपके पास डॉकर उपलब्ध नहीं है, तो आपको हाइपर-वी ड्राइवर का उपयोग करना चाहिए। ऐसा करने के लिए, आप इस से परामर्श कर सकते हैं मार्गदर्शक. ध्यान रखें कि आपको हाइपर-वी के साथ इंटरफेस करने के लिए मिनिक्यूब व्यवस्थापक विशेषाधिकार देने की आवश्यकता होगी।

kubectl (Logs & Troubleshooting)

Install कुबेक्टल to inspect Ilum resources and stream logs.

Install

Guide

  • macOS: brew install kubectl

  • Windows: winget install -e --id Kubernetes.kubectl (or) choco install kubernetes-cli

  • Linux:

    छल्‍ला -LO "https://dl.k8s.io/release/$(छल्‍ला -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    sudo install -लाख 0755 kubectl /usr/local/bin/kubectl

Quick use

Kubectl फली प्राप्त करें -n <ns>
kubectl logs -n <ns> <pod> --all-containers -स्‍त्री-विषयक
kubectl describe pod -n <ns> <pod>
kubectl get events -n <ns> --sort-by=.lastTimestamp

पतवार

हेल्म कुबेरनेट्स के लिए एक पैकेज मैनेजर है जो आपको कुबेरनेट्स एप्लिकेशन को परिभाषित करने, इंस्टॉल करने और अपग्रेड करने की अनुमति देता है। यदि आपने अभी तक हेल्म स्थापित नहीं किया है, तो आप निर्देश पा सकते हैं यहाँ.

Cluster Resource Allocation

Minikube resource allocation determines available capacity for Spark executors and Ilum services.

Configuration Options:

For full module testing (metadata, lineage, SQL):

मिनिक्यूब स्टार्ट --cpus 12 --memory 18192 --addons metrics-server

For minimal Spark workloads:

मिनिक्यूब स्टार्ट --cpus 6 --memory 12288 --addons metrics-server

वही metrics-server addon exposes pod-level CPU/memory metrics to the Ilum UI dashboard.

Minikube Limitations:

  • Single-node cluster (no distributed executor scheduling)
  • Suitable for functional testing, not performance benchmarks

For production deployments, see Production Setup.

Alternative: Use the Ilum CLI

For a streamlined installation experience, you can use the Ilum CLI instead of manual Helm commands. The CLI wraps Helm and kubectl, providing guided setup, module management, and one-command deployment with ilum quickstart. See the CLI Getting Started guide.

हेल्म परिनियोजन

Add the Ilum chart repository:

helm repo आगे कहना ilum https://charts.ilum.cloud
हेल्म रेपो अपडेट

Includes Hive Metastore for table metadata, the multi-engine SQL gateway (Kyuubi), and OpenLineage data tracking.

helm install इलम इलम / \
--अस्त हो ilum-hive-metastore.enabled=सच्चा \
--अस्त हो ilum-core.metastore.enabled=सच्चा \
--अस्त हो ilum-core.metastore.type=छत्ता \
--अस्त हो ilum-sql.enabled=सच्चा \
--अस्त हो ilum-core.sql.enabled=सच्चा \
--अस्त हो global.lineage.enabled=सच्चा

Capabilities enabled:

  • Centralized Hive Metastore (compatible with Spark, Trino, DuckDB, Flink)
  • Multi-engine SQL execution via Kyuubi (Spark and Trino out of the box; DuckDB available locally)
  • Automatic lineage capture via OpenLineage, visualized in Marquez
  • Table and column-level lineage in the Ilum UI

Resource overhead: ~8 GB RAM, 6 CPU cores for metadata, lineage, and SQL gateway services.

Option 2: Minimal Deployment

Minimal deployment for development and testing. Includes इलम कोर, इलम यूआई, ilum-api, Spark 4.x execution, DuckDB, and the DuckLake catalog. No external Hive Metastore or lineage tracking.

helm install इलम इलम /

Use case: Development, testing, ephemeral workloads where table schemas are managed externally.

Option 3: Custom Module Selection

Use the module selector to generate Helm commands with specific integrations (Trino, Nessie, Unity Catalog, Airflow, Superset, MLflow, LangFuse, etc.). Optional modules can also be enabled and disabled at runtime through the in-product Modules registry, which is backed by the ilum-api microservice.

Deployment time: Services typically reach ready state within 2-6 minutes. Monitor with:

Kubectl फली प्राप्त करें -w

For advanced configuration options, see Helm chart documentation.

स्थापना समस्याएं

यदि आपको इलम स्थापना, दृष्टि समस्या निवारण अनुभाग से संबंधित कोई समस्या है यहाँ or write us an email ([ईमेल संरक्षित]).

UI Access

The Ilum web interface provides job management, resource monitoring, and SQL query capabilities. Default credentials: शासन / शासन

Minikube Service Exposure

minikube सेवा इलम यूआई

Returns cluster-accessible URL (e.g., http://192.168.49.2:31777).

NodePort (Default)

The UI service is exposed via NodePort on 31777 by default. Find your node IP:

kubectl get nodes -ओ wide

Access at http://<NODE_IP>:31777.

Port Forwarding (Development)

kubectl port-forward svc/ilum-ui 9777:9777

Access at http://localhost:9777.

Ingress Controller (Production)

For production deployments, configure an Ingress resource with TLS termination. See Ingress configuration guide for details.

प्रमाणीकरण:

  • Default admin account: शासन / शासन
  • Change credentials via Helm values or UI user management
  • LDAP/OAuth2 integration available (see Security docs)

UI पर एक स्पार्क आवेदन जमा करना

नोक

New to Ilum? Learn the fastest path from install → first job. Take the official Ilum Course.

अब जब आपका कुबेरनेट्स क्लस्टर इलम के माध्यम से स्पार्क नौकरियों को संभालने के लिए कॉन्फ़िगर किया गया है, तो आइए एक स्पार्क एप्लिकेशन सबमिट करें। इस उदाहरण के लिए, हम Spark से "SparkPi" उदाहरण का उपयोग करेंगे प्रलेखन. You can download the required JAR file from one of these links:

Spark 4 / Scala 2.13: spark-examples_2.13-4.1.1.jar

Ilum will create a Spark driver pod using the Spark 4.x docker image. The number of Spark executor pods can be scaled to multiple nodes as per your requirements.

इलम

और बस! आपने सफलतापूर्वक इलम की स्थापना की है और अपना पहला स्पार्क जॉब चलाया है। स्पार्क एप्लिकेशन सबमिट करने और प्रबंधित करने के लिए इलम यूआई और एपीआई का पता लगाने के लिए स्वतंत्र महसूस करें। पारंपरिक दृष्टिकोणों के लिए, आप परिचित का भी उपयोग कर सकते हैं स्पार्क-सबमिट आज्ञा।

स्काला/जावा के साथ इंटरएक्टिव स्पार्क जॉब

इलम में इंटरएक्टिव नौकरियां लंबे समय तक चलने वाले सत्र हैं जो नौकरी के उदाहरण डेटा को तुरंत निष्पादित कर सकते हैं। यह विशेष रूप से उपयोगी है क्योंकि हर बार स्पार्क संदर्भ को आरंभीकृत करने की प्रतीक्षा करने की आवश्यकता नहीं है। यदि एकाधिक उपयोगकर्ता एक ही नौकरी आईडी को इंगित करते हैं, तो वे एक ही स्पार्क संदर्भ के साथ बातचीत करेंगे।

अपने मौजूदा स्पार्क नौकरियों में इंटरैक्टिव क्षमताओं को सक्षम करने के लिए, आपको अपने कोड के उस हिस्से के लिए एक सरल इंटरफ़ेस लागू करने की आवश्यकता होगी जिसे इंटरैक्टिव होने की आवश्यकता है। यहां बताया गया है कि आप इसे कैसे कर सकते हैं:

सबसे पहले, अपने प्रोजेक्ट में Ilum जॉब API निर्भरता जोड़ें:

ग्रैडल

कार्यान्वयन 'Cloud.ilum: ilum-job-api: 6.3.0'

मावेन

<निर्भरता>
<समूह आईडी>बादल.इलमसमूह आईडी>
<आर्टिफैक्टआईडी>इलम-जॉब-एपीआईआर्टिफैक्टआईडी>
<विवरण>6.3.0विवरण>
निर्भरता>

एसबीटी

libraryDependencies += "cloud.ilum" % "ilum-job-api" % "6.3.0"

फिर, नौकरी आपके स्पार्क जॉब में विशेषता / यहाँ एक उदाहरण है:

स्काला

पैकेज इंटरैक्टिव.job.example

आयात बादल.इलम.job.नौकरी
आयात org.apache.उत्तेजक गुण.एसक्यूएल.स्पार्कसेशन

कक्षा InteractiveJobExample extends नौकरी {

override डीईएफ़ चलाना(sparkSession: स्पार्कसेशन, कॉन्फिग: Map[String, कोई]): Option[String] = {
val userParam = कॉन्फिग.getOrElse("उपयोगकर्तापरम", "कोई नहीं").toString
Some(दक्षिणी"Hello ${userParam}")
}
}

जावा

पैकेज इंटरैक्टिव.job.example;

आयात बादल.इलम.job.नौकरी;
आयात org.apache.उत्तेजक गुण.एसक्यूएल.स्पार्कसेशन;
आयात scala.Option;
आयात scala.Some;
आयात scala.collection.immutable.Map;
सार्वजनिक कक्षा InteractiveJobExample implements नौकरी {
@Override
सार्वजनिक Option<String> चलाना(स्पार्कसेशन sparkSession, Map<String, Object> कॉन्फिग) {
String userParam = कॉन्फिग.getOrElse("उपयोगकर्तापरम", () -> "कोई नहीं");
लौटना Some.apply("Hello " + userParam);
}
}

इस उदाहरण में, चलाना विधि को स्वीकार करने के लिए ओवरराइड किया गया है a स्पार्कसेशन और एक कॉन्फ़िगरेशन मानचित्र। यह कॉन्फ़िगरेशन मानचित्र से एक उपयोगकर्ता पैरामीटर पुनर्प्राप्त करता है और एक ग्रीटिंग संदेश देता है।

आप एक समान उदाहरण पा सकते हैं गिटहब.

इस पैटर्न का पालन करके, आप अपनी स्पार्क नौकरियों को इंटरैक्टिव नौकरियों में बदल सकते हैं जो तुरंत गणना निष्पादित कर सकते हैं, उपयोगकर्ता अन्तरक्रियाशीलता में सुधार कर सकते हैं और प्रतीक्षा समय को कम कर सकते हैं।

पायथन के साथ इंटरएक्टिव स्पार्क जॉब

नीचे एक उदाहरण दिया गया है कि पायथन में एक इंटरैक्टिव स्पार्क जॉब को कैसे कॉन्फ़िगर किया जाए इलम पुस्तकालय:

  1. स्पार्क इमेज सेटअप

    a) DockerHub से Docker छवि का उपयोग करें
    प्रत्येक स्पार्क छवि हम प्रदान करते हैं डॉकरहब पहले से ही आवश्यक घटकों में निर्मित है।

    b) स्थापित करा इलम पैकेज
    यदि, किसी भी कारण से, आपकी डॉकर छवि में शामिल नहीं है इलम पैकेज या यदि आप अपनी खुद की कस्टम छवि बनाते हैं, तो आप इसे (या तो कंटेनर के भीतर या स्थानीय रूप से) चलाकर स्थापित कर सकते हैं:

    pip install इलम-जॉब-एपीआई
  2. में नौकरी की संरचना इलम \

    स्पार्क जॉब लॉजिक को एक ऐसे वर्ग में समझाया गया है जो इलुमजॉब का विस्तार करता है, विशेष रूप से इसकी रन विधि के भीतर

से इलम.एपीआई आयात इलम जॉब

कक्षा पायथनस्पार्कउदाहरण(इलम जॉब):
डीईएफ़ चलाना(स्वयं, उत्तेजक गुण, कॉन्फिग):
# यहां जॉब लॉजिक

सरल इंटरैक्टिव स्पार्क पाई उदाहरण:

से यादृच्छिक आयात यादृच्छिक
से संचालक आयात आगे कहना

से इलम.एपीआई आयात इलम जॉब


कक्षा स्पार्कपीआईइंटरएक्टिवउदाहरण(इलम जॉब):

डीईएफ़ चलाना(स्वयं, उत्तेजक गुण, कॉन्फिग):
विभाजन = इंट(कॉन्फिग.मिलना('विभाजन', '5'))
n = 100000 * विभाजन

डीईएफ़ is_inside_unit_circle(_: इंट) -> बहना:
x = यादृच्छिक() * 2 - 1
y = यादृच्छिक() * 2 - 1
लौटना 1.0 अगर x ** 2 + y ** 2 <= 1 के अलावा 0.0

गिनना = (
उत्तेजक गुण.स्पार्ककॉन्टेक्स्ट.समानांतर करें(श्रेणी(1, n + 1), विभाजन)
.मानचित्र(is_inside_unit_circle)
.कम करना(आगे कहना)
)

pi_approx = 4.0 * गिनना / n
लौटना f"Pi मोटे तौर पर है {pi_approx}"

आप एक समान उदाहरण पा सकते हैं गिटहब.

यूआई पर एक इंटरैक्टिव स्पार्क नौकरी जमा करना

एक फ़ाइल बनाने के बाद जिसमें आपका स्पार्क कोड है, आपको इसे इलम में जमा करना होगा। यहां बताया गया है कि आप इसे कैसे कर सकते हैं:

अपने ब्राउज़र में इलम यूआई खोलें और एक नई सेवा बनाएं:

इलम

में सामान्य टैब किसी सेवा का नाम डालें

इलम

में याद टैब एक क्लस्टर चुनें और अपनी मेमोरी सेटिंग्स सेट करें

इलम

में संसाधन टैब अपनी चिंगारी अपलोड करें रेती

इलम

दबाना जमा करें अपने परिवर्तनों को लागू करने के लिए, और इलम स्वचालित रूप से एक स्पार्क ड्राइवर पॉड बना देगा। आप स्पार्क निष्पादक पॉड्स की संख्या को आवश्यकतानुसार स्केल करके समायोजित कर सकते हैं।

इसके बाद, वर्कलोड अपनी नौकरी का पता लगाने के लिए अनुभाग। इसके नाम पर क्लिक करके आप इसके डिटेल व्यू को एक्सेस कर सकते हैं। एक बार स्पार्क कंटेनर तैयार हो जाने के बाद, आप निर्दिष्ट करके कार्य चला सकते हैं फ़ाइल नाम.क्लासनाम और JSON प्रारूप में किसी भी वैकल्पिक पैरामीटर को परिभाषित करना।

इलम

अब हमें फ़ाइल नाम.क्लासनाम दायर कक्षा में:

Ilum_interactive_spark_pi। स्पार्कपीआईइंटरएक्टिवउदाहरण

और JSON प्रारूप में स्लाइस पैरामीटर को परिभाषित करें:

{
"विभाजन": 5
}

आरंभीकरण चरण के कारण पहले अनुरोधों में कुछ सेकंड लग सकते हैं, एक दूसरे को तत्काल किया जाएगा।

इलम

इन चरणों का पालन करके, आप इलम का उपयोग करके इंटरैक्टिव स्पार्क नौकरियां जमा और चला सकते हैं। यह कार्यक्षमता रीयल-टाइम डेटा प्रोसेसिंग प्रदान करती है, उपयोगकर्ता अन्तरक्रियाशीलता को बढ़ाती है, और परिणामों की प्रतीक्षा में लगने वाले समय को कम करती है।