如何从本地运行的Spark Shell连接到Spark EMR

7
我已创建了一个Spark EMR集群。我希望在本地计算机或EMR集群上执行作业。
假设我在本地计算机上运行spark-shell,如何告诉它连接到Spark EMR集群,需要哪些确切的配置选项和/或命令来运行。

我猜你需要通过ssh连接到你的EMR集群并提交Spark代码。 - WoodChopper
@WoodChopper,谢谢。我能够通过ssh连接到EMR集群并从那里提交代码,没有任何问题。我想知道是否可以直接从本地主机Spark shell向远程EMR集群提交代码。 - Datageek
1
我认为,除非您的本地计算机是群集的主节点,否则您无法这样做。在EMR的情况下,显然不是这样的。 - WoodChopper
2个回答

1
看起来其他人也在这方面失败了,最终在EMR上运行Spark driver,但是利用例如Zeppelin或Jupyter在EMR上运行。

将我们自己的机器设置为连接到EMR核心节点的Spark driver本来是理想的。不幸的是,这是不可能做到的,我们放弃了尝试很多配置更改后。驱动程序会启动,然后一直等待失败,尝试连接到从节点。

我们大部分的Spark开发都是使用Jupyter Notebook作为我们的IDE进行的。由于我们必须从主节点运行Jupyter,如果集群崩溃,我们不能冒失丢失工作。因此,我们创建了一个EBS卷并将其附加到主节点,并将所有工作放在该卷上。[...]

source

注意:如果您走这条路线,我建议考虑使用S3存储笔记本电脑,这样您就不必管理EBS卷。


0

一种方法是将您的Spark作业作为EMR步骤添加到EMR集群中。为此,您需要在本地计算机上安装AWS CLI(请参见此处的安装指南),以及您的jar文件在s3上。

假设您要运行的Spark类是com.company.my.MySparkJob,并且您的jar文件位于s3上的s3://hadi/my-project-0.1.jar,则可以从终端运行以下命令:

aws emr add-steps --cluster-id j-************* --steps Type=spark,Name=My_Spark_Job,Args=[-class,com.company.my.MySparkJob,s3://hadi/my-project-0.1.jar],ActionOnFailure=CONTINUE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接