gpt4 book ai didi

apache-spark - AWS EMR 多作业依赖争用

转载 作者:行者123 更新时间:2023-12-02 19:12:33 25 4
gpt4 key购买 nike

问题
我试图在 EMR 中运行 2 个 pyspark 步骤,这两个步骤都使用 KinesisUtils 从 Kinesis 读取。这需要依赖库 spark-streaming-kinesis-asl_2.11。
我正在使用 Terraform 来建立 EMR 集群并使用 args 调用这些步骤:
--packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
从 maven 下载 jar 的两个步骤启动时似乎存在争用,并导致校验和失败。
尝试的事情

  • 我尝试使用以下命令将 jar 的下载移动到 bootstrap bash 脚本:

  • 须藤 spark-shell --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
    这会导致问题,因为 spark-shell 仅在主节点上可用,而 bootstrap 尝试在所有节点上运行。
  • 我尝试将上述内容限制为仅在使用
  • 的主机上运行

    grep-q'"isMaster":true'/mnt/var/lib/info/instance.json ||{echo "不在主节点上运行,无事可做"&& exit 0;}
    那似乎不起作用。
  • 我试图在 EMR configuration.json 中添加 spark 配置来做到这一点
    {
    “分类”:“ Spark 默认”,
    “特性”: {
    "spark.jars.packages": "org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5"
    }
    }

  • 这也不起作用,似乎阻止了所有 jar 被复制到主节点目录
    /home/hadoop/.ivy2/cache
    手动工作是登录到主节点并运行
    须藤 spark-shell --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
    然后在没有 --packages 选项的情况下手动提交作业。
    目前,我需要做的就是分别手动启动失败的作业(AWS 控制台中的克隆步骤)并且一切运行正常。
    我只是希望能够在所有步骤成功启动的情况下启动集群,任何帮助将不胜感激。

    最佳答案

  • 下载需要的jar包并上传到s3。(一次)
  • 从步骤运行 pyspark 作业时,通过 --jars <s3 location of jar>在您的 spark-submit
  • 关于apache-spark - AWS EMR 多作业依赖争用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62680177/

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