从外部 AWS EMR 集群提交 spark-submit

spark-submit from outside AWS EMR cluster

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

我已经做了一些寻找答案的工作,但我还不能确定我正在阅读的内容是指从集群的主机或任意笔记本电脑启动作业。 ..

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

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

您可以通过 spark-submit 本身指定大部分相关的 spark 作业配置。 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 重新指定那些相同的配置选项。

您可以在本地计算机上设置 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/