【问题标题】:submit a pyspark application from a kubernetes pod从 kubernetes pod 提交 pyspark 应用程序
【发布时间】:2021-09-01 06:00:41
【问题描述】:

用例: 使用 spark 从 Kafka 存储在 parquet 文件中获取流。 打开这些 parquet 文件并使用 graphframes 生成图形。

基础设施: 我在连接到 Kafka 的 kubernetes 上有一个 bitnami spark 基础设施。

目标是将 spark-submit 调用到 kubernetes pod 中。 这样所有代码都运行到了 kubernetes 中,我没有在 kubernetes 之外安装 spark。

没有 kubernetes,我已经在 spark master 容器中完成了这项工作:

docker cp ./Spark/Python_code/edge_stream.py spark_spark_1:/opt/bitnami/spark/edge_stream.py
docker cp ./Spark/Python_code/config.json spark_spark_1:/opt/bitnami/spark/config.json
docker exec spark_spark_1 \
    spark-submit \
    --master spark://0.0.0.0:7077 \
    --deploy-mode client \
    --conf spark.cores.max=1 \
    --conf spark.executor.memory=1g \
    --conf spark.eventLog.enabled=true \
    --conf spark.eventLog.dir=/tmp/spark-events \
    --conf spark.eventLog.rolling.maxFileSize=256m\
    /opt/bitnami/spark/edge_stream.py

在 kubernetes 中可以做同样的工作吗?

最好的问候

【问题讨论】:

    标签: docker kubernetes pyspark apache-kafka


    【解决方案1】:

    我设法创建了作业,但仅在不使用“命令”标签的情况下。要拥有一个功能性的 yalm 文件,我必须将我的命令作为参数。 如果有人有解释,我是接受者:-)

    谢谢

    apiVersion: batch/v1
    kind: Job                    
    metadata:
      name: apao-spark-vertex-job
    spec:                       
      template:
        metadata:
          name: apao-spark-vertex-job
        spec:
          containers:
          - name: apao-spark
            image: apao_spark
            imagePullPolicy: IfNotPresent
            args: [ "spark-submit", "--class", "VertexStreamApp", "--master", "spark://apao-service-spark-master-svc:7077", "--deploy-mode", "cluster", "--conf", "spark.cores.max=1", "--conf", "spark.executor.cores=1", "--conf", "spark.executor.memory=1g", "/tmp/app/vertex-stream-project_2.12-1.0.jar" ]
          restartPolicy: Never
    

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        使用kubernetes的exec命令

        minikube kubectl -- exec my-spark-master-0 -- spark-submit \
            --master spark://0.0.0.0:7077 \
            --deploy-mode client \
            --conf spark.cores.max=1 \
            --conf spark.executor.memory=1g \
            --conf spark.eventLog.enabled=true \
            --conf spark.eventLog.dir=/tmp/spark-events \
            --conf spark.eventLog.rolling.maxFileSize=256m\
            ../Python/edge_stream.py
        

        【讨论】:

          猜你喜欢
          • 2017-11-27
          • 1970-01-01
          • 2022-06-16
          • 2021-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-15
          • 1970-01-01
          相关资源
          最近更新 更多