AWS EMR 多个作业依赖性争用
AWS EMR Multiple Jobs Dependency Contention
问题
我正在尝试 运行 EMR 中的 2 个 pyspark 步骤都使用 KinesisUtils 从 Kinesis 读取。这个需要依赖库,spark-streaming-kinesis-asl_2.11.
我正在使用 Terraform 建立 EMR 集群并使用 args 调用步骤:
--包org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
从 maven 下载 jar 并导致校验和失败的两个步骤在启动时似乎存在争用。
尝试的事情
- 我尝试使用以下方法将 jar 的下载移动到 bootstrap bash 脚本:
sudo spark-shell --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
这会导致问题,因为 spark-shell 仅在主节点上可用,而 bootstrap 尝试在所有节点上 运行。
- 我已经尝试使用
将上述内容限制为仅 运行 在 master 上
grep-q'"isMaster":true'/mnt/var/lib/info/instance.json ||{echo "Not 运行ning on masternode,nothing further to do" && exit 0; }
这似乎没有用。
我试图在 EMR 中添加 spark 配置来执行此操作 configuration.json
{
"分类": "spark-defaults",
“属性”:{
"spark.jars.packages": "org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5"
}
}
这也没有用,似乎阻止了所有 jar 被复制到主节点目录
/home/hadoop/.ivy2/cache
手动工作的是登录到主节点和 运行ning
sudo spark-shell --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
然后在不使用 --packages 选项的情况下手动提交作业。
目前,我需要做的就是分别手动启动失败的作业(在 AWS 控制台中执行克隆步骤),然后一切正常 运行。
我只是希望能够成功启动所有步骤的集群,任何帮助将不胜感激。
- 下载所需的jar并上传到s3。(一次)
- 虽然 运行 您的 pyspark 作业来自步骤,但在您的 spark-submit
中传递 --jars <s3 location of jar>
问题
我正在尝试 运行 EMR 中的 2 个 pyspark 步骤都使用 KinesisUtils 从 Kinesis 读取。这个需要依赖库,spark-streaming-kinesis-asl_2.11.
我正在使用 Terraform 建立 EMR 集群并使用 args 调用步骤:
--包org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
从 maven 下载 jar 并导致校验和失败的两个步骤在启动时似乎存在争用。
尝试的事情
- 我尝试使用以下方法将 jar 的下载移动到 bootstrap bash 脚本:
sudo spark-shell --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
这会导致问题,因为 spark-shell 仅在主节点上可用,而 bootstrap 尝试在所有节点上 运行。
- 我已经尝试使用 将上述内容限制为仅 运行 在 master 上
grep-q'"isMaster":true'/mnt/var/lib/info/instance.json ||{echo "Not 运行ning on masternode,nothing further to do" && exit 0; }
这似乎没有用。
我试图在 EMR 中添加 spark 配置来执行此操作 configuration.json
{
"分类": "spark-defaults",
“属性”:{
"spark.jars.packages": "org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5"
}
}
这也没有用,似乎阻止了所有 jar 被复制到主节点目录
/home/hadoop/.ivy2/cache
手动工作的是登录到主节点和 运行ning
sudo spark-shell --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
然后在不使用 --packages 选项的情况下手动提交作业。
目前,我需要做的就是分别手动启动失败的作业(在 AWS 控制台中执行克隆步骤),然后一切正常 运行。
我只是希望能够成功启动所有步骤的集群,任何帮助将不胜感激。
- 下载所需的jar并上传到s3。(一次)
- 虽然 运行 您的 pyspark 作业来自步骤,但在您的 spark-submit 中传递
--jars <s3 location of jar>