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

时间:2017-05-17 04:09:59

标签: amazon-web-services apache-spark yarn amazon-emr

我正在使用yarn作为主集群部署模式运行AWS EMR集群。我阅读的所有教程都使用AWS CLI在所谓的“Spark Steps”中运行spark-submit,使用类似于以下的命令:

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将文件移动到主节点,然后通过SSH运行应用程序来提交我的spark应用程序:

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应用程序是否仍然通过从主节点提交作业以分布式方式运行?

1 个答案:

答案 0 :(得分:4)

提交EMR步骤是使用亚马逊的自定义构建步骤提交过程,这是一个相对较轻的包装器抽象,它本身称为spark-submit。从根本上说,没有什么区别,但如果您希望与平台无关(不要锁定在亚马逊上),请使用SSH策略或使用Livy尝试更高级的提交策略,如远程提交或我最喜欢的一个。