我有 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");
最佳答案
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.
请参阅relevant Spark code解析发生的地方:
val masterUrls = sparkUrl.split(",").map("spark://" + _)
同时sparkUrl
使用 """spark://(.*)""".r
进行匹配正则表达式。
关于apache-spark - 如何指定多个Spark Standalone master(对于spark.master属性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43993246/