来自AWS EMR集群外部的spark-submit

时间:2018-06-07 21:33:12

标签: amazon-web-services pyspark amazon-emr spark-submit

我有一个运行spark的AWS EMR集群,我想从我的笔记本电脑(--master yarn)向它提交PySpark作业,以便在集群模式下运行。 我知道我需要在笔记本电脑上设置一些配置,但我想知道最低限度是什么。我是否只需要群集主节点中的一些配置文件?如果是这样,哪个?或者我是否需要在本地机器上安装hadoop或yarn?

我已经做了很多寻找答案,但我还没有确定我正在阅读的内容是指从群集主人或某个任意笔记本电脑中启动工作......

2 个答案:

答案 0 :(得分:0)

如果您只想在AWS EMR集群上运行spark-submit作业,则无需在本地安装任何内容。您只需要在创建群集时在“安全选项”中指定的EC2密钥对。

我个人scp通过任何相关脚本和/或jar,ssh进入群集的主节点,然后运行spark-submit

您可以通过spark-submit本身指定大多数相关的火花作业配置。 AWS documents in some more detail如何配置spark-submit作业。

例如:

>> scp -i ~/PATH/TO/${SSH_KEY} /PATH/TO/PYSPARK_SCRIPT.py hadoop@${PUBLIC_MASTER_DNS}:  
>> ssh -i ~/PATH/TO/${SSH_KEY} hadoop@${PUBLIC_MASTER_DNS}
>> spark-submit --conf spark.OPTION.OPTION=VALUE PYSPARK_SCRIPT.py

但是,如果您在创建群集时已经传递了特定配置,则无需通过spark-submit重新指定相同的配置选项。

答案 1 :(得分:0)

您可以在本地机器上设置 AWS CLI,将您的部署放在 S3 上,然后添加一个 EMR 步骤以在 EMR 集群上运行。像这样:

aws emr add-steps --cluster-id j-xxxxx --steps Type=spark,Name=SparkWordCountApp,Args=[--deploy-mode,cluster,--master,yarn,--conf,spark.yarn.submit.waitAppCompletion=false,--num-executors,5,--executor-cores,5,--executor-memory,20g,s3://codelocation/wordcount.py,s3://inputbucket/input.txt,s3://outputbucket/],ActionOnFailure=CONTINUE

来源:https://aws.amazon.com/de/blogs/big-data/submitting-user-applications-with-spark-submit/