মূল বিষয়বস্তুতে যান

শুরু করা যাক

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

Installation Architecture

Ilum follows a modular architecture where core Spark execution capabilities are separated from optional data platform features. The base installation provides:

  • Spark 3.x/4.x job orchestration on Kubernetes
  • Jupyter notebook integration
  • REST API for job submission

Additional modules enable enterprise data platform capabilities:

  • মৌচাক মেটাস্টোর : Centralized metadata management for tables and schemas
  • এসকিউএল ভিউয়ার : Interactive SQL query interface with result caching
  • উপাত্ত বংশ : OpenLineage-based tracking of data transformations across jobs
  • নজরদারি : Grafana dashboards with Spark metrics and resource utilization

Resource Planning:

  • Base deployment (Spark + Jupyter): 8-12GB RAM, 6 CPU cores
  • With metadata + lineage modules: 18GB RAM, 12 CPU cores
  • Production workloads: Size based on concurrent Spark executor requirements

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

পূর্বশর্ত

আপনার মেশিনে ইলম চালানোর জন্য আপনার নিম্নলিখিতগুলির প্রয়োজন হবে:

Kubernetes Cluster

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

উইন্ডোজ ওএসে মিনিকিউব নিয়ে সমস্যা

আপনি যদি উইন্ডোজ ব্যবহার করেন তবে আপনি ড্রাইভার সম্পর্কিত মিনিকুব নিয়ে সমস্যার মুখোমুখি হতে পারেন।

উইন্ডোজে, মিনিকুব বিভিন্ন ড্রাইভার (কুবারনেটস ক্লাস্টারের জন্য হোস্ট) থেকে চয়ন করতে পারে, তবে সাধারণভাবে আপনি যে কোনও একটি ব্যবহার করতে চান হাইপার-ভি বা ডকার . আপনার যদি ডকার ইনস্টল করা থাকে, আপনার হয় ডকার ড্রাইভারের সাথে মিনিকুব ব্যবহার করা উচিত বা ডকার ডেস্কটপে অন্তর্নির্মিত কুবারনেটস সমর্থন সক্ষম করা উচিত।

আপনার যদি ডকার উপলব্ধ না থাকে তবে আপনার হাইপার-ভি ড্রাইভার ব্যবহার করা উচিত। এটি করার জন্য, আপনি এই পরামর্শ নিতে পারেন নির্দেশিকা . মনে রাখবেন যে হাইপার-ভি এর সাথে ইন্টারফেস করার জন্য আপনাকে মিনিকিউব প্রশাসককে বিশেষাধিকার দিতে হবে।

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:

    curl -LO "https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    sudo install -m 0755 kubectl /usr/local/bin/kubectl

Quick use

kubectl get pods -n <ns>
kubectl logs -n <ns> <pod> --all-containers -f
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):

মিনিকিউব শুরু --সিপিইউএস 12 - মেমরি 18192 --অ্যাডঅন মেট্রিক্স-সার্ভার 

For minimal Spark workloads:

মিনিকিউব স্টার্ট --সিপিইউএস 6 - মেমরি 12288 --অ্যাডঅনস মেট্রিক্স-সার্ভার 

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.

হেলম ডিপ্লয়মেন্ট

Add the Ilum chart repository:

রেপো যোগ করুন https://charts.ilum.cloud 
হেলম রেপো আপডেট

Includes Hive Metastore for table metadata, SQL query interface, and OpenLineage data tracking.

Helm installation il and ile/el \ 
--সেট ilum-Hive-metastore.enabled=true \
--set ilum-core.metastore.enabled=true \
--set ilum-core.metastore.type=hive \
--সেট ilum-sql.enabled=true \
--সেট ilum-core.sql.সক্ষম=সত্য \
--set global.lineage.enabled=true

Capabilities enabled:

  • Centralized Hive Metastore (compatible with Spark, Presto, Trino)
  • SQL query execution with result pagination
  • Automatic lineage capture via OpenLineage hooks
  • Table/column-level lineage visualization

Resource overhead: ~8GB RAM, 6 CPU cores for metadata services.

Option 2: Basic Spark Execution Platform

Minimal deployment for Spark job submission and notebook execution. No persistent metadata or lineage tracking.

হেলম ইনস্টল এবং ইল / এল 

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 (Airflow, Superset, MLflow, etc.).

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

kubectl get pods -w

For advanced configuration options, see Helm chart documentation.

ইনস্টলেশন সমস্যা

ইলাম ইনস্টলেশন, দৃষ্টি সমস্যা সমাধান বিভাগ সম্পর্কিত আপনার যদি কোনও সমস্যা থাকে এখানে or write us an email([email protected] ).

UI Access

The Ilum web interface provides job management, resource monitoring, and SQL query capabilities. Default credentials: অ্যাডমিন / অ্যাডমিন

Minikube Service Exposure

মিনিকুব সার্ভিস ilum-ui 

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 -o ওয়াইড 

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

Port Forwarding (Development)

কুবেক্টল পোর্ট-ফরোয়ার্ড এসভিসি / আইএলইউএম-ইউআই 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.

Authentication:

  • 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.

এখন যেহেতু আপনার কুবারনেটস ক্লাস্টারটি ইলামের মাধ্যমে স্পার্কের কাজগুলি পরিচালনা করার জন্য কনফিগার করা হয়েছে, আসুন একটি স্পার্ক আবেদন জমা দিন। এই উদাহরণের জন্য, আমরা স্পার্ক থেকে "স্পার্কপাই" উদাহরণটি ব্যবহার করব ডকুমেন্টেশন . তুমি প্রয়োজনীয় জার ফাইলটি ডাউনলোড করতে পারো এই লিংক .

ইলাম স্পার্ক 3.x ডকার চিত্র ব্যবহার করে একটি স্পার্ক ড্রাইভার পড তৈরি করবে। আপনার প্রয়োজনীয়তা অনুসারে স্পার্ক এক্সিকিউটর পডের সংখ্যা একাধিক নোডে স্কেল করা যেতে পারে।

ইলুম

আর এটুকুই! আপনি সফলভাবে ইলম সেট আপ করেছেন এবং আপনার প্রথম স্পার্ক কাজটি চালিয়েছেন। স্পার্ক অ্যাপ্লিকেশন জমা দেওয়া এবং পরিচালনা করার জন্য ইলাম ইউআই এবং এপিআই অন্বেষণ করতে নির্দ্বিধায়। ঐতিহ্যগত পদ্ধতির জন্য, আপনি পরিচিত ব্যবহার করতে পারেন স্পার্ক-সাবমিট আদেশ।

স্কালা / জাভা সহ ইন্টারেক্টিভ স্পার্ক জব

ইলুমে ইন্টারেক্টিভ কাজগুলি দীর্ঘ-চলমান সেশন যা তাত্ক্ষণিকভাবে কাজের উদাহরণের ডেটা কার্যকর করতে পারে। এটি বিশেষত কার্যকর কারণ প্রতিবার স্পার্ক প্রসঙ্গটি শুরু হওয়ার জন্য অপেক্ষা করার দরকার নেই। যদি একাধিক ব্যবহারকারী একই কাজের আইডির দিকে ইঙ্গিত করে তবে তারা একই স্পার্ক প্রসঙ্গে ইন্টারঅ্যাক্ট করবে।

আপনার বিদ্যমান স্পার্ক কাজগুলিতে ইন্টারেক্টিভ ক্ষমতা সক্ষম করতে, আপনাকে আপনার কোডের অংশে একটি সাধারণ ইন্টারফেস বাস্তবায়ন করতে হবে যা ইন্টারেক্টিভ হওয়া দরকার। আপনি এটি কীভাবে করতে পারেন তা এখানে:

প্রথমত, আপনার প্রকল্পে ইলাম জব এপিআই নির্ভরতা যুক্ত করুন:

গ্রেডেল

বাস্তবায়ন 'Cloud.ilum: ilum-job-API :6.3.0' 

মাভেন

< নির্ভরশীলতা > 
< GroupId > ক্লাউড.ইলুম </ GroupId >
< artifactId > ilum-job-API </ artifactId >
< সংস্করণ > 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( s "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) ;
}
}

এই উদাহরণে, চালনা পদ্ধতি একটি গ্রহণ করার জন্য ওভাররাইড করা হয় স্পার্কসেশন এবং একটি কনফিগারেশন মানচিত্র। এটি কনফিগারেশন মানচিত্র থেকে একটি ব্যবহারকারী প্যারামিটার পুনরুদ্ধার করে এবং একটি শুভেচ্ছা বার্তা প্রদান করে।

আপনি একটি অনুরূপ উদাহরণ খুঁজে পেতে পারেন গিটহাব .

এই প্যাটার্নটি অনুসরণ করে, আপনি আপনার স্পার্ক কাজগুলিকে ইন্টারেক্টিভ চাকরিতে রূপান্তর করতে পারেন যা তাত্ক্ষণিকভাবে গণনাগুলি কার্যকর করতে পারে, ব্যবহারকারীর ইন্টারঅ্যাক্টিভিটি উন্নত করতে এবং অপেক্ষার সময় হ্রাস করতে পারে।

পাইথনের সাথে ইন্টারেক্টিভ স্পার্ক জব

নীচে পাইথনে একটি ইন্টারেক্টিভ স্পার্ক কাজ কীভাবে কনফিগার করা যায় তার একটি উদাহরণ ইলুম লাইব্রেরী:

  1. স্পার্ক ইমেজ সেটআপ

    a) DockerHub থেকে একটি ডকার চিত্র ব্যবহার করুন
    প্রতিটি স্পার্ক চিত্র আমরা সরবরাহ করি DockerHub ইতিমধ্যে প্রয়োজনীয় উপাদান অন্তর্নির্মিত আছে।

    b) ইনস্টল করুন ইলুম প্যাকেজ
    যদি, কোনও কারণে, আপনার ডকার চিত্রটিতে অন্তর্ভুক্ত না থাকে ইলুম প্যাকেজ বা আপনি যদি নিজের কাস্টম চিত্র তৈরি করেন তবে আপনি এটি চালিয়ে (ধারকের মধ্যে বা স্থানীয়ভাবে) ইনস্টল করতে পারেন:

    পিপ ইনস্টল ইলুম 
  2. কাজের কাঠামো ইলুম
    স্পার্ক জব লজিকটি এমন একটি শ্রেণিতে আবদ্ধ করা হয়েছে যা ইলুমজবকে প্রসারিত করে, বিশেষত এর রান পদ্ধতির মধ্যে

থেকে ইলুম . এপিআই আমদানি ইলুমজব 

শ্রেণী PythonSparkExample ( ইলুমজব ) :
ডিএফ চালনা ( স্বয়ং , স্ফুলিঙ্গ , কনফিগার ) :
# এখানে চাকরির যুক্তি

সহজ ইন্টারেক্টিভ স্পার্ক পাই উদাহরণ:

থেকে এলোমেলো আমদানি এলোমেলো 
থেকে কার্যকর্তা আমদানি যুক্ত

থেকে ইলুম . এপিআই আমদানি ইলুমজব


শ্রেণী স্পার্কপাই ইন্টারেক্টিভউদাহরণ ( ইলুমজব ) :

ডিএফ চালনা ( স্বয়ং , স্ফুলিঙ্গ , কনফিগার ) :
পার্টিশন = আইএনটি ( কনফিগার . পান ( 'পার্টিশন' , '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
ফিরে চ"পাই মোটামুটি { pi_approx } "

আপনি একটি অনুরূপ উদাহরণ খুঁজে পেতে পারেন গিটহাব .

UI-তে একটি ইন্টারেক্টিভ স্পার্ক কাজ জমা দেওয়া

আপনার স্পার্ক কোডযুক্ত একটি ফাইল তৈরি করার পরে আপনাকে এটি ইলামে জমা দিতে হবে। আপনি এটি কীভাবে করতে পারেন তা এখানে:

আপনার ব্রাউজারে ইলাম ইউআই খুলুন এবং একটি নতুন পরিষেবা তৈরি করুন:

ইলুম

এতে সাধারণ ট্যাব একটি সেবার নাম দিন

ইলুম

এতে স্মৃতি ট্যাব একটি ক্লাস্টার চয়ন করুন এবং আপনার মেমরি সেটিংস সেট আপ করুন

ইলুম

এতে সংস্থান ট্যাব আপনার স্পার্ক আপলোড করুন ফাইল

ইলুম

টিপুন জমা আপনার পরিবর্তনগুলি প্রয়োগ করতে, এবং ইলাম স্বয়ংক্রিয়ভাবে একটি স্পার্ক ড্রাইভার পড তৈরি করবে। আপনি প্রয়োজন অনুসারে স্কেল করে স্পার্ক এক্সিকিউটর পডগুলির সংখ্যা সামঞ্জস্য করতে পারেন।

এরপরে, যান কাজের চাপ আপনার কাজ খুঁজে পেতে বিভাগ। এর নামের উপর ক্লিক করলেই এর বিস্তারিত ভিউ পাওয়া যাবে। একবার স্পার্ক ধারক প্রস্তুত হয়ে গেলে, আপনি নির্দিষ্ট করে কাজটি চালাতে পারেন filename.classname এবং JSON বিন্যাসে কোনও ঐচ্ছিক পরামিতি সংজ্ঞায়িত করা।

ইলুম

এখন আমাদের লাগাতে হবে filename.classname ফাইল করা ক্লাসে:

Ilum_interactive_spark_pi। স্পার্কপাই ইন্টারেক্টিভউদাহরণ

এবং জেএসওএন ফর্ম্যাটে স্লাইস প্যারামিটারটি সংজ্ঞায়িত করুন:

{ 
"পার্টিশন" : 5
}

প্রথম অনুরোধগুলি প্রারম্ভিক পর্যায়ের কারণে কয়েক সেকেন্ড সময় নিতে পারে, একে অপরের তাত্ক্ষণিক হবে।

ইলুম

এই পদক্ষেপগুলি অনুসরণ করে, আপনি ইলাম ব্যবহার করে ইন্টারেক্টিভ স্পার্ক কাজ জমা দিতে এবং চালাতে পারেন। এই কার্যকারিতাটি রিয়েল-টাইম ডেটা প্রসেসিং সরবরাহ করে, ব্যবহারকারীর ইন্টারঅ্যাক্টিভিটি বাড়ায় এবং ফলাফলের জন্য অপেক্ষা করার সময় হ্রাস করে।