日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark On K8S(Standalone模式部署)

發布時間:2025/1/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark On K8S(Standalone模式部署) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spark on K8S 的幾種模式

  • Standalone:在 K8S 啟動一個長期運行的集群,所有 Job 都通過 spark-submit 向這個集群提交

  • Kubernetes Native:通過 spark-submit 直接向 K8S 的 API Server 提交,申請到資源后啟動 Pod 做為 Driver 和 Executor 執行 Job,參考 http://spark.apache.org/docs/2.4.6/running-on-kubernetes.html

  • Spark Operator:安裝 Spark Operator,然后定義 spark-app.yaml,再執行 kubectl apply -f spark-app.yaml,這種申明式 API 和調用方式是 K8S 的典型應用方式,參考 https://github.com/GoogleCloudPlatform/spark-on-k8s-operator

Download Spark

https://archive.apache.org/dist/spark/

Spark 和 Hadoop 關系比較緊密,可以下載帶 Hadoop 的版本,這樣會有 Hadoop 的 jar 包可以用,不然可能會出現找不到包和類的錯誤,哪怕其實沒用到 Hadoop

Build Spark Image

Spark 2.3 開始提供 bin/docker-image-tool.sh 工具用于 build image

sudo ./bin/docker-image-tool.sh -t my_spark_2.4_hadoop_2.7 build

遇到類似下面的錯誤

WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz: temporary error (try again later) WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz: temporary error (try again later) ERROR: unsatisfiable constraints:bash (missing):required by: world[bash]

這是網絡問題,可以修改 ./bin/docker-image-tool.sh,在里面的 docker build 命令加上 --network=host 使容器使用宿主機網絡 (要確保宿主機網絡是 OK 的)

啟動集群

定義 manifest

--- apiVersion: v1 kind: Service metadata:name: spark-manager spec:type: ClusterIPports:- name: rpcport: 7077- name: uiport: 8080selector:app: sparkcomponent: sparkmanager --- apiVersion: v1 kind: Service metadata:name: spark-manager-rest spec:type: NodePortports:- name: restport: 8080targetPort: 8080selector:app: sparkcomponent: sparkmanager --- apiVersion: apps/v1 kind: Deployment metadata:name: spark-manager spec:replicas: 1selector:matchLabels:app: sparkcomponent: sparkmanagertemplate:metadata:labels:app: sparkcomponent: sparkmanagerspec:containers:- name: sparkmanagerimage: spark:my_spark_2.4_hadoop_2.7workingDir: /opt/sparkcommand: ["/bin/bash", "-c", "/opt/spark/sbin/start-master.sh && while true;do echo hello;sleep 6000;done"]ports:- containerPort: 7077name: rpc- containerPort: 8080name: uilivenessProbe:tcpSocket:port: 7077initialDelaySeconds: 30periodSeconds: 60 --- apiVersion: apps/v1 kind: Deployment metadata:name: spark-worker spec:replicas: 2selector:matchLabels:app: sparkcomponent: workertemplate:metadata:labels:app: sparkcomponent: workerspec:containers:- name: sparkworkerimage: spark:my_spark_2.4_hadoop_2.7workingDir: /opt/sparkcommand: ["/bin/bash", "-c", "/opt/spark/sbin/start-slave.sh spark://spark-manager:7077 && while true;do echo hello;sleep 6000;done"]

啟動

sudo kubectl create -f standalone.yaml

查看 pod 狀態

spark-manager-cfc7f9fb-679tc 1/1 Running 0 16s spark-worker-6f55fddc87-sgnfh 1/1 Running 0 16s spark-worker-6f55fddc87-w5zgm 1/1 Running 0 16s

查看 service

spark-manager ClusterIP 10.108.230.84 <none> 7077/TCP,8080/TCP 6m16s spark-manager-rest NodePort 10.106.200.126 <none> 8080:30277/TCP 6m16s

查看 rest service 信息

lin@lin-VirtualBox:~$ sudo kubectl get svc spark-manager-rest NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE spark-manager-rest NodePort 10.106.200.126 <none> 8080:30277/TCP 7m59s

登陸 10.106.200.126:8080 就可以看到 Spark Manager 的 Web UI,可以看到 worker 信息,和 Job 信息

如果要看更詳細的 Job 信息還需要啟動 spark history server

提交 Job

登陸其中一臺 worker

sudo kubectl exec -t -i spark-worker-6f55fddc87-w5zgm /bin/bash

提交 Job

# 第二個 wordcount.py 作為參數用 bin/spark-submit \--master spark://spark-manager:7077 \--num-executors 2 \--name spark-test \/opt/spark/examples/src/main/python/wordcount.py \/opt/spark/examples/src/main/python/wordcount.py

注意在 standalone 模式下的 Python 不支持 cluster 模式,即 driver 必然運行在執行 spark-submit 的容器上

Log

Driver 的 log 隨 spark-submit 命令打出來

Executor 的 log 分布在每個 Worker 的 work 目錄下

/opt/spark/work/app-20200727062422-0002/0/stderr

app-20200727062422-0002 是 Job 的 Id,可以在 Web UI 上看到,也可以在 Driver 的 log 看到

總結

以上是生活随笔為你收集整理的Spark On K8S(Standalone模式部署)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。