如何指定多个 Spark Standalone masters(对于 spark.master 属性)?

Vin*_*ran 2 apache-spark spark-cassandra-connector

我有 1 个主节点,其中 3 个工作节点与主节点通信。

作为灾难​​恢复,我们创建了 2 个 Master,让 Zookeeper 选举 Master。我正在使用 datastax 的 spark Cassandra 连接器。有没有办法传递多个 Spark Master URL 以连续尝试成功。

new SparkConf(true)
        .set("spark.cassandra.connection.host", "10.3.2.1")  
        .set("spark.cassandra.auth.username","cassandra")
        .set("spark.cassandra.auth.password",cassandra"))
        .set("spark.master", "spark://1.1.2.2:7077") // Can I give multiple Urls here?
        .set("spark.app.name","Sample App");
Run Code Online (Sandbox Code Playgroud)

Jac*_*ski 5

tl;dr使用逗号分隔host:port条目,例如spark://localhost:7077,localhost:17077

请注意,您应该避免硬编码连接细节,因为它们是操作的一部分,应该使用 spark-submit 的--master命令行选项真正定义:

$ ./bin/spark-submit --help

Options:
  --master MASTER_URL         spark://host:port, mesos://host:port, yarn, or local.
Run Code Online (Sandbox Code Playgroud)

查看解析发生的相关 Spark 代码

val masterUrls = sparkUrl.split(",").map("spark://" + _)
Run Code Online (Sandbox Code Playgroud)

whilesparkUrl使用"""spark://(.*)""".r正则表达式匹配。