AWS EMR 在达到 256 pending/running 个作业限制后如何反应?
How AWS EMR react after reaching the 256 pending/running jobs limit is reached?
根据
https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html
AWS EMR "Beginning with AMI 3.1.1 (Hadoop 2.x) and AMI 2.4.8 (Hadoop 1.x), you can submit an unlimited number of steps over the lifetime of a long-running cluster, but only 256 can be active or pending at any given time"
我的问题是:
如果您已经达到 256 个限制,您将在哪里以及如何找到已提交的其余已提交职位?
EMR 是否保持已提交作业的队列,当一个作业完成时 (succes/failed) 它会从 "invisible client job queue" 中选择另一个作业?
如果 EMR 有这样的队列(如 2 中所述),这些作业将保留多长时间?
是否可以通过EMR访问API,提交的不在256个职位中的职位?
期待您的回答/
此致,
弗罗林
我已经与亚马逊支持中心讨论过,他们给出了以下答案:
"1. 这个限制是由 EMR 步骤 API (这是在 AWS 端)强加的,而不是由 YARN 或 Spark 本身强加的。这是你在查看集群属性时看到的控制台并导航到集群详细信息中的 'Steps',或从 CLI 调用 'list-steps'。您会知道何时达到此限制,因为当您通过该步骤提交新步骤时API(通过控制台或来自 CLI 的 'add-steps' 调用),您将收到一条错误消息,指出已经有 256 个步骤处于 运行 或挂起状态,并且该步骤不会被采纳,所以不会有该步提交的记录
我不确定如何准确回答这个问题,所以我将只解释 EMR 集群将如何处理作业。在集群 运行 Hadoop 2.x 中,YARN(集群的资源管理器)负责跟踪作业。当作业提交给 YARN(通过 AWS api 作为一个步骤或直接提交给 YARN)时,YARN 将跟踪提交的作业并在集群的调度程序和资源允许的情况下处理它们。步骤 API 只是一个抽象层,它允许您利用 AWS API 将作业提交到 YARN,而无需直接访问集群,而是使用 EMR 服务端点。当在步骤 API 收到请求时,该信息由集群上名为 'instance-controller' 的守护程序收集,并作为作业提交传递给 YARN。步骤提交可以在集群的'Steps'选项卡的详细信息中的控制台中看到,并且可以通过访问集群的shell和运行'yarn application -list -appStates ALL'来查看YARN作业。根据正在使用的 YARN 调度程序的配置,作业按提交顺序 and/or 优先级处理。
集群将在集群的生命周期内跟踪每个作业。
再次,我想澄清一下,该限制特定于通过 EMR 步骤 API 提交的作业;如果需要,作业仍然可以通过它自己的 API 直接提交给 YARN,并且您可以分别访问 pending/active 步骤列表和 YARN 作业。
YARN 具有巨大的存储和管理信息的能力;步骤 API 的限制与存储层有关,这些存储层在 EMR back-end 上保留有关集群配置的持久信息。"
我的简历,经 AWS 支持团队确认:
256 个作业限制是由 EMR 作业 API 提出的,这是一个硬限制。
作为客户,当我达到限制时,我会得到一个例外,这个限制
已经达到,所有步骤提交都将被拒绝。
达到此限制后,仍然可以通过 YARN 客户端提交作业。
希望这些能对有这些问题的其他人有所帮助。
此致,
弗罗林
根据
https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html
AWS EMR "Beginning with AMI 3.1.1 (Hadoop 2.x) and AMI 2.4.8 (Hadoop 1.x), you can submit an unlimited number of steps over the lifetime of a long-running cluster, but only 256 can be active or pending at any given time"
我的问题是:
如果您已经达到 256 个限制,您将在哪里以及如何找到已提交的其余已提交职位?
EMR 是否保持已提交作业的队列,当一个作业完成时 (succes/failed) 它会从 "invisible client job queue" 中选择另一个作业?
如果 EMR 有这样的队列(如 2 中所述),这些作业将保留多长时间?
是否可以通过EMR访问API,提交的不在256个职位中的职位?
期待您的回答/
此致,
弗罗林
我已经与亚马逊支持中心讨论过,他们给出了以下答案:
"1. 这个限制是由 EMR 步骤 API (这是在 AWS 端)强加的,而不是由 YARN 或 Spark 本身强加的。这是你在查看集群属性时看到的控制台并导航到集群详细信息中的 'Steps',或从 CLI 调用 'list-steps'。您会知道何时达到此限制,因为当您通过该步骤提交新步骤时API(通过控制台或来自 CLI 的 'add-steps' 调用),您将收到一条错误消息,指出已经有 256 个步骤处于 运行 或挂起状态,并且该步骤不会被采纳,所以不会有该步提交的记录
我不确定如何准确回答这个问题,所以我将只解释 EMR 集群将如何处理作业。在集群 运行 Hadoop 2.x 中,YARN(集群的资源管理器)负责跟踪作业。当作业提交给 YARN(通过 AWS api 作为一个步骤或直接提交给 YARN)时,YARN 将跟踪提交的作业并在集群的调度程序和资源允许的情况下处理它们。步骤 API 只是一个抽象层,它允许您利用 AWS API 将作业提交到 YARN,而无需直接访问集群,而是使用 EMR 服务端点。当在步骤 API 收到请求时,该信息由集群上名为 'instance-controller' 的守护程序收集,并作为作业提交传递给 YARN。步骤提交可以在集群的'Steps'选项卡的详细信息中的控制台中看到,并且可以通过访问集群的shell和运行'yarn application -list -appStates ALL'来查看YARN作业。根据正在使用的 YARN 调度程序的配置,作业按提交顺序 and/or 优先级处理。
集群将在集群的生命周期内跟踪每个作业。
再次,我想澄清一下,该限制特定于通过 EMR 步骤 API 提交的作业;如果需要,作业仍然可以通过它自己的 API 直接提交给 YARN,并且您可以分别访问 pending/active 步骤列表和 YARN 作业。
YARN 具有巨大的存储和管理信息的能力;步骤 API 的限制与存储层有关,这些存储层在 EMR back-end 上保留有关集群配置的持久信息。"
我的简历,经 AWS 支持团队确认:
256 个作业限制是由 EMR 作业 API 提出的,这是一个硬限制。
作为客户,当我达到限制时,我会得到一个例外,这个限制 已经达到,所有步骤提交都将被拒绝。
达到此限制后,仍然可以通过 YARN 客户端提交作业。
希望这些能对有这些问题的其他人有所帮助。
此致, 弗罗林