亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在客戶端模式 Kubernetes 下運行 pyspark 作業

無法在客戶端模式 Kubernetes 下運行 pyspark 作業

ITMISS 2023-12-09 16:46:46
我正在使用以下指南在我的 aks Kubernetes 集群中部署 pyspark:https://towardsdatascience.com/ignite-the-spark-68f3f988f642http://blog.brainlounge.de/memoryleaks/getting-started-with-spark-on-kubernetes/我已經按照上面鏈接中的說明部署了我的驅動程序吊艙:apiVersion: apps/v1kind: Deploymentmetadata:  namespace: spark  name: my-notebook-deployment  labels:    app: my-notebookspec:  replicas: 1  selector:    matchLabels:      app: my-notebook  template:    metadata:      labels:        app: my-notebook    spec:      serviceAccountName: spark      containers:      - name: my-notebook        image: pidocker-docker-registry.default.svc.cluster.local:5000/my-notebook:latest        ports:          - containerPort: 8888        volumeMounts:          - mountPath: /root/data            name: my-notebook-pv        workingDir: /root        resources:          limits:            memory: 2Gi      volumes:        - name: my-notebook-pv          persistentVolumeClaim:            claimName: my-notebook-pvc---apiVersion: v1kind: Servicemetadata:  namespace: spark  name: my-notebook-deploymentspec:  selector:    app: my-notebook  ports:    - protocol: TCP      port: 29413  clusterIP: None然后我可以使用以下代碼創建 Spark 集群:import osfrom pyspark import SparkContext, SparkConffrom pyspark.sql import SparkSession# Create Spark config for our Kubernetes based cluster managersparkConf = SparkConf()sparkConf.setMaster("k8s://https://kubernetes.default.svc.cluster.local:443")sparkConf.setAppName("spark")sparkConf.set("spark.kubernetes.container.image", "<MYIMAGE>")sparkConf.set("spark.kubernetes.namespace", "spark")sparkConf.set("spark.executor.instances", "7")sparkConf.set("spark.executor.cores", "2")sparkConf.set("spark.driver.memory", "512m")sparkConf.set("spark.executor.memory", "512m")sparkConf.set("spark.kubernetes.pyspark.pythonVersion", "3")據我所知,我正在嘗試在客戶端節點中運行我的 Spark 集群,jupyter pod 充當主節點并創建從屬節點,當我在 jupyter pod 內運行代碼時它可以工作,但當其他 pod 嘗試連接它時它可以工作。我該如何解決這個問題?
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

我遇到了類似的問題,最后我手動創建了客戶端 Pod 所需的服務。就我而言,我想部署不支持集群模式的 Spark-thrift 服務器。


首先,您需要創建 Spark blockManager 和驅動程序本身所需的服務


apiVersion: v1

kind: Service

metadata:

  name: spark-thrift

spec:

  type: ClusterIP

  ports:

    - protocol: TCP

      port: 4000

      name: driver

    - protocol: TCP

      port: 4001

      name: block-manager

現在你可以像這樣啟動你的驅動程序:


apiVersion: apps/v1beta1

kind: Deployment

metadata:

  name: spark-thrift

  labels:

    app: spark-thrift

spec:

  template:

    spec:

      containers:

        - name: spark-thrift-driver

          image: image:latest

          command:

            - /opt/spark/bin/spark-submit

          args:

            - "--name"

            - "spark-thrift"

            - "--class"

            - "org.apache.spark.sql.hive.thriftserver.HiveThriftServer2"

            - "--conf"

            - "spark.driver.port=4000"

            - "--conf"

            - "spark.driver.host=spark-thrift"

            - "--conf"

            - "spark.driver.bindAddress=0.0.0.0"

            - "--conf"

            - "spark.driver.blockManager.port=4001"

          imagePullPolicy: Always

          ports:

            - name: driver

              containerPort: 4000

            - name: blockmanager

              containerPort: 4001

這里的重要論點是

  • “spark.driver.host=spark-thrift” - 指向主機(因此是服務名稱)

  • “spark.driver.port=4000” - 指向驅動程序端口

  • “spark.driver.bindAddress=0.0.0.0” - 這是spark不使用spark-thrift作為主機名所必需的,否則會導致錯誤

  • “spark.driver.blockManager.port=4001” - 指向 blockManager 端口

顯然,這不是一個工作 Pod 的完整示例,您仍然需要在規范中配置您自己的端口和卷。


查看完整回答
反對 回復 2023-12-09
  • 1 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號