我正在使用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应用程序是否仍然通过从主节点提交作业以分布式方式运行?
答案 0 :(得分:4)
提交EMR步骤是使用亚马逊的自定义构建步骤提交过程,这是一个相对较轻的包装器抽象,它本身称为spark-submit。从根本上说,没有什么区别,但如果您希望与平台无关(不要锁定在亚马逊上),请使用SSH策略或使用Livy尝试更高级的提交策略,如远程提交或我最喜欢的一个。