在亚马逊emr上运行时要指定为spark master的内容

时间:2016-12-09 13:44:13

标签: apache-spark amazon-emr

Spark有native support by EMR。使用EMR Web界面创建新集群时,可以添加一个自定义步骤,在集群启动时执行Spark应用程序,基本上是集群启动后的自动spark-submit。

我一直在想如何在启动EMR集群并通过指定的EMR步骤提交jar文件时,如何在应用程序中为SparkConf指定主节点?

预先知道集群主机的IP是不可能的,如果我手动启动集群然后在调用spark-submit之前使用该信息构建到我的应用程序中的话。

代码段:

SparkConf conf = new SparkConf().setAppName("myApp").setMaster("spark:\\???:7077");
JavaSparkContext sparkContext = new JavaSparkContext(conf);

请注意,我正在询问"集群"执行模式,因此驱动程序也在集群上运行。

1 个答案:

答案 0 :(得分:2)

简短回答:不要。

更长的答案:主屏幕网址如" spark://..."适用于Spark Standalone,但EMR在YARN上使用Spark,因此主URL应该只是" yarn"。这已在spark-defaults.conf中为您配置,因此当您运行spark-submit时,您甚至不必包含" - master ..."。

但是,由于您询问群集执行模式(实际上,它被称为"部署模式"),您可以指定" - master yarn-cluster" (已弃用)或" - 部署模式群集" (优选的)。这将使Spark驱动程序在随机群集模式下运行,而不是在EMR主机上运行。