【问题标题】:what to specify as spark master when running on amazon emr在亚马逊 emr 上运行时指定为 spark master 的内容
【发布时间】:2017-04-25 00:24:39
【问题描述】:

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

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

不可能事先知道集群主服务器的 IP,如果我手动启动集群,然后在调用 spark-submit 之前使用该信息构建到我的应用程序中,就会出现这种情况。

代码sn-p:

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

注意我问的是“集群”执行模式,所以驱动程序也运行在集群上。

【问题讨论】:

    标签: apache-spark amazon-emr


    【解决方案1】:

    简短回答:不要。

    更长的答案:像“spark://...”这样的主 URL 用于 Spark Standalone,但 EMR 在 YARN 上使用 Spark,因此主 URL 应该只是“yarn”。这已经在 spark-defaults.conf 中为您配置好了,所以当您运行 spark-submit 时,您甚至不必包含“--master ...”。

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

    【讨论】:

    • 我是专门询问在应用程序中定义 SparkConf 的(如代码 sn-p 所示)。在本地模式下,当省略 setMaster 指令时,会抛出 org.apache.spark.SparkException: A master URL must be set in your configuration。所以我很担心,如果集群上会出现同样的问题。
    • 不,集群上不会发生同样的错误,因为默认的主 URL 是在 spark-defaults.conf 中设置的。无论您是询问传递给 spark-submit 的参数还是代码中 SparkConf 上设置的属性,我的回答都适用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2014-07-24
    相关资源
    最近更新 更多