如何将多个 spark 作业提交到单个 AWS EMR 集群

How to submit multiple spark jobs to single AWS EMR cluster

我正在尝试向 EMR 集群提交多个作业,但我只看到第一个处于 运行ning 状态,其余都处于已接受状态。我的大部分工作都是流媒体工作。

我有以下疑问:

  1. 如何实现这些作业的并行运行?
  2. 为将来的部署自动化这些作业的各种方法是什么?
  3. 我如何处理预定的作业(例如 运行ning 每 15 分钟一次)?

我正在使用 Java 进行开发。任何输入都会非常有帮助。

如果 EMR 中的多个步骤彼此不依赖,那么您可以使用 EMR 中称为 Concurrency 的功能来解决您的用例。此功能仅意味着您可以一次 运行 并行执行 1 个以上的步骤。

此功能从 EMR 版本 5.28.0 开始就有。如果您使用的是比这更旧的版本,那么您将无法使用此功能。

从 AWS 控制台启动 EMR 时,此功能在 UI 中称为 'Concurrency'。您可以选择 1 到 256 之间的任何数字。

如果您从 AWS CLI 启动 EMR,则此功能称为 'StepConcurrencyLevel'.

您可以在 multiple steps now in EMR and AWS CLI details

阅读更多相关信息

回答你关于 我如何处理计划作业的第二个问题?

有多种方法可以做到这一点。我能想到的一种简单方法是编写一个 lambda 函数来生成此 EMR。现在,这个 lambda 函数可以在 AWS cloudwatch 中以您想要的任何频率(比如每 15 分钟或任何时间间隔)安排 运行。您只需要提及一个 Cron 表达式,它将决定触发此规则的频率。

因此每次触发规则时,它都会执行您的 lambda 函数。而您的 lambda 函数又会产生 EMR。通过这种方式,您可以安排您的工作。