0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Thiết Lập và Sử Dụng Spark Operator trên Kubernetes

Đăng vào 3 tuần trước

• 4 phút đọc

Hướng Dẫn Thiết Lập và Sử Dụng Spark Operator trên Kubernetes

Giới thiệu về Spark Operator

Spark Operator là một Kubernetes Operator được thiết kế đặc biệt cho Spark. Nó giúp định nghĩa và thực thi các ứng dụng Spark một cách dễ dàng như các workload khác trên Kubernetes, bằng cách sử dụng và quản lý các tài nguyên tùy chỉnh (CRDs) trong Kubernetes để chỉ định, chạy và cập nhật trạng thái của các ứng dụng Spark. Tất cả mã nguồn phát triển có sẵn tại Bigdata-Repo.

Để tìm hiểu thêm, bạn có thể tìm thấy thông tin tại phần Thiết kế, Đặc điểm API và Hướng dẫn Người dùng trên GitHub.

Tại sao nên chọn Spark Operator?

Spark Operator đơn giản hóa việc triển khai và quản lý các ứng dụng Spark trên Kubernetes. Nó cung cấp một cách tiếp cận khai báo để chạy các ứng dụng Spark, xử lý sự phức tạp trong quản lý tài nguyên, lập lịch và giám sát. Điều này cho phép các nhà phát triển tập trung vào việc viết mã Spark thay vì quản lý cơ sở hạ tầng. Thêm vào đó, Spark Operator hỗ trợ cả khối lượng công việc theo lô và luồng, giúp đáp ứng đa dạng nhu cầu xử lý dữ liệu lớn.

Lợi ích chính của Spark Operator gồm có:

  • Quản lý ứng dụng khai báo: Định nghĩa các ứng dụng Spark trong các tệp YAML, giúp dễ dàng quản lý và triển khai ứng dụng bằng cách sử dụng các công cụ của Kubernetes như kubectl.
  • Quản lý tài nguyên tự động: Tự động phân bổ tài nguyên cho các tác vụ Spark, đảm bảo sử dụng hiệu quả các tài nguyên của cụm.
  • Đa dạng: Hỗ trợ cả khối lượng công việc theo lô và luồng, phục vụ cho một loạt các nhu cầu xử lý dữ liệu lớn.
  • Giám sát đơn giản: Tích hợp với các công cụ giám sát của Kubernetes, cung cấp cái nhìn rõ hơn về hiệu suất công việc và việc sử dụng tài nguyên.

Cách hoạt động của Spark Operator

Bước 1: Định nghĩa ứng dụng Spark trong tệp YAML

Bạn sẽ tạo một tệp YAML mô tả ứng dụng Spark của mình. Tệp này sẽ bao gồm các thông số xác định như loại ứng dụng (ví dụ: Python, Java), Docker image sử dụng, yêu cầu tài nguyên cho driver và executor, cùng với các thiết lập cấu hình khác.

Bước 2: Áp dụng tệp YAML bằng kubectl

Khi tệp YAML đã sẵn sàng, bạn có thể sử dụng kubectl để áp dụng tệp này vào cụm Kubernetes của bạn. Spark Operator sẽ đọc tệp này, tạo các tài nguyên Kubernetes cần thiết và quản lý vòng đời của ứng dụng Spark.

1. Các bước thiết lập Spark Operator với Kubernetes

Các yêu cầu trước khi bắt đầu

Trước khi bắt đầu, hãy đảm bảo bạn có những thứ sau đây:

  • Một cụm Kubernetes đang chạy.
  • Công cụ dòng lệnh kubectl đã được cài đặt và cấu hình.
  • Git được cài đặt trên máy tính của bạn.

Bước 1: Nhân bản kho mã nguồn

Nhân bản kho mã chứa cấu hình và các script cần thiết để triển khai Spark Operator:

Copy
git clone https://github.com/dnguyenngoc/big-data.git

Bước 2: Bắt đầu Spark Operator

Chuyển đến thư mục k8s và sử dụng script _start.sh để triển khai Spark Operator. Script này tự động hóa quá trình thiết lập:

Copy
cd big-data/k8s
sh _start.sh spark-operator

Bước 3: Xác minh việc triển khai

Sau khi triển khai Spark Operator, hãy xác minh rằng các pod và stateful set đang chạy đúng cách trong namespace spark-operator:

Copy
kubectl get pod,statefulset -n spark-operator

Kết quả nên hiển thị các pod và stateful set đang chạy có liên quan đến Spark Operator.

2. Nộp ứng dụng

SparkApplication về cơ bản là một tài nguyên CRD có thể được áp dụng lên cụm bằng cách sử dụng kubectl, như trong ví dụ dưới đây:

Copy
---
apiVersion: 'sparkoperator.k8s.io/v1beta2'
kind: SparkApplication
metadata:
  name: pyspark-pi
  namespace: spark-operator
spec:
  type: Python
  pythonVersion: '3'
  mode: cluster
  image: 'duynguyenngoc/spark:3.5.1'
  imagePullPolicy: Always
  mainApplicationFile: local:///opt/spark/examples/src/main/python/pi.py
  sparkVersion: '3.5.1'
  restartPolicy:
    type: OnFailure
    onFailureRetries: 3
    onFailureRetryInterval: 10
    onSubmissionFailureRetries: 5
    onSubmissionFailureRetryInterval: 20
  driver:
    cores: 1
    coreLimit: '1200m'
    memory: '512m'
    labels:
      version: 3.5.1
    serviceAccount: sparkoperator
  executor:
    cores: 1
    instances: 1
    memory: '512m'
    labels:
      version: 3.5.1

Để nộp ứng dụng Spark Pi này lên Kubernetes, bạn chỉ cần sử dụng:

Copy
kubectl apply -f spark-pi.yaml
kubectl get sparkapp -n spark-operator

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào