Spark 作业提交:AWS EMR 步骤或命令行 spark-submit

Spark Job Submission: AWS EMR step or command line spark-submit

我正在 运行使用 yarn 作为主节点和集群部署模式来构建 AWS EMR 集群。我阅读的所有教程 运行s spark-submit 使用 AWS CLI 在所谓的 "Spark Steps" 中使用类似于以下的命令:

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]

我的教授建议我通过 SCP 将文件移动到主节点来提交我的 spark 应用程序,然后 运行通过 SSH 连接应用程序:

ssh hadoop@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com

然后我会通过shell将数据文件放入HDFS。最后我会简单地 运行 spark-submit:

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

通过 AWS CLI 提交 "Spark Step" 与通过 SSH 运行宁 spark-submit 到主节点有什么区别?我的 Spark 应用程序是否仍会通过从主节点提交作业以分布式方式 运行?

提交 EMR 步骤是使用 Amazon 自定义构建的步骤提交过程,这是一个相对轻量级的包装器抽象,它本身称为 spark-submit。从根本上说,差别不大,但如果您希望成为平台不可知论者(不再局限于 Amazon),请使用 SSH 策略或尝试更高级的提交策略,例如远程提交或我最喜欢的一种,使用 Livy。