gpt4 book ai didi

apache-spark - Spark on K8 的问题加载 jar

转载 作者:行者123 更新时间:2023-12-02 12:36:16 24 4
gpt4 key购买 nike

我正在尝试在 kubernetes 上运行示例 spark 应用程序(在 spark 示例 jar 中提供)并尝试了解行为。在这个过程中,我做了以下,

  • 构建了一个运行中的 Kubernetes 集群,其中包含 3 个节点(1 个主节点和 2 个子节点)以及足够的资源(10 个内核、64Gigs 内存、500GB 磁盘)。请注意,我的节点上没有 Internet 访问权限。
  • 安装的 Spark 发行版 - spark-2.3.3-bin-hadoop2.7
  • 由于节点上没有 Internet 访问权限,我将 spark 镜像(来自 gcr.io/cloud-solutions-images/spark:v2.3.0-gcs)预加载到运行 kubernetes master
  • 的节点上的 docker 中
  • 运行 spark-submit 到 k8 如下,
  • ./bin/spark-submit --master k8s://https://test-k8:6443 \
    --deploy-mode cluster \
    --name spark-pi \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.executor.instances=5 \
    --conf spark.kubernetes.container.image=gcr.io/cloud-solutions-images/spark:v2.3.0-gcs \
    --conf spark.kubernetes.driver.pod.name=spark-pi-driver \
    --conf spark.kubernetes.container.image.pullPolicy=IfNotPresent \
    local:///opt/spark/examples/jars/spark-examples_2.11-2.3.3.jar

    但是,它失败并出现以下错误,
    Error: Could not find or load main class org.apache.spark.examples.SparkPi

    关于上述问题,我有以下问题:
  • 我们是否需要为 Kubernetes 提供 spark 的分发?这就是我们正在做的吗?
  • --conf spark.kubernetes.container.image=gcr.io/cloud-solutions-images/spark:v2.3.0-gcs

  • 如果我有自己的 spark 示例,例如处理来自 Kafka 的事件。我的方法应该是什么?

  • 对调试上述错误和回答我的后续问题的任何帮助都非常感谢。

    最佳答案

    spark.kubernetes.container.image 应该是包含 spark 二进制文件和应用程序代码的图像。就我而言,因为我无法从我的节点访问互联网。执行以下操作让 spark 驱动程序选择正确的 jar。

    所以,这就是我所做的,

  • 在我的本地计算机上,我做了一个 docker build
  • docker build -t spark_pi_test:v1.0 -f kubernetes/dockerfiles/spark/Dockerfile .

    上面在我的本地计算机中为我构建了一个 docker 镜像。
  • tar'd 构建的 docker 镜像,
  • docker save spark_pi_test:v1.0 > spark_pi_test_v1.0.tar
  • scp 将 tar 球发送到所有 3 个 kube 节点。
  • docker 在所有 3 个 kube 节点上加载 tar 球。
  • docker load < spark_pi_test_v1.0.tar

    然后我提交spark作业如下,
    ./bin/spark-submit --master k8s://https://test-k8:6443 --deploy-mode cluster --name spark-pi --class org.apache.spark.examples.SparkPi --conf spark.executor.instances=5 --conf spark.kubernetes.container.image=spark_pi_test:v1.0 --conf spark.kubernetes.driver.pod.name=spark-pi-driver --conf spark.kubernetes.container.image.pullPolicy=IfNotPresent local:///opt/spark/examples/jars/spark-examples_2.11-2.3.3.jar 100000

    上面的jar路径就是docker容器中的路径。
    对于 DockerFile 的引用,
    https://github.com/apache/spark/blob/master/resource-managers/kubernetes/docker/src/main/dockerfiles/spark/Dockerfile

    关于apache-spark - Spark on K8 的问题加载 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55423346/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com