AWS EMR 步骤与命令行 spark-submit

AWS EMR step Vs command line spark-submit

如下所示提交 EMR 步骤与 运行 在 EMR 集群的主节点上提交 spark 之间有什么区别。

EMR 步骤

aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/lib/spark-examples.jar,10]

Spark 提交

spark-submit --master yarn --deploy-mode cluster my_spark_app.py my_hdfs_file.csv

会不会运行spark直接在master节点上提交,使其分布在核心节点之间。 这两种方法在性能上有什么变化?哪种方法更好

通过 EMR Step 提交可在 AWS 平台上提供一些额外的监控和工具。

  • EMR 有 running/completed/failed 个步骤的 CloudWatch 指标。
  • EMR 步骤在 complete/failure 上调度 Eventbridge 事件,可用作触发器。
  • 如果您的 EMR 集群 运行 位于私有子网上,您必须通过隧道连接到该子网以监控您的作业,EMR 步骤状态没有此限制。
  • 与上面类似,如果您的集群位于私有子网上,您必须通过 ssh 隧道进入以调用 spark-submit,EMR API 是可公开寻址的。
  • 如果您想通过状态机运行将 EMR 作业作为工作流程的一部分,EMR RunJobFlowStep 具有 AWS Step Functions 集成。

我确定还有其他好处,但这些是我见过的好处。

编辑: 一个警告 - 对于 EMR 步骤,您需要通过命令-runner.jar 提交作业,这些最终会在您的主节点上作为 EMR 步骤生命周期中的 运行ning 进程。如果您要 运行 处理数百个步骤,您可能最终需要一个更大的主节点来支持所有这些过程。