创建 Managed Service for Apache Spark 集群时,您可以通过指定集群中的主实例数量来将集群置于 Hadoop 高可用性 (HA) 模式。主实例的数量只能在创建集群时指定。
目前,Managed Service for Apache Spark 支持两种主实例配置:
- 1 个主实例(默认,非 HA)
- 3 个主实例 (Hadoop HA)
默认模式与 Hadoop 高可用性模式的比较
Compute Engine 故障:在 Compute Engine 意外发生故障的罕见情况下,Managed Service for Apache Spark 实例将会遇到机器重新启动的情况。Managed Service for Apache Spark 默认的单主实例配置可在此情况下恢复并继续处理新工作,但正在进行的作业必然会失败并需要重新运行,并且,在重启后,直到单个 NameNode 完全恢复之前,您将无法访问 HDFS。在高可用性模式下,系统会配置 HDFS 高可用性和 YARN 高可用性,以确保在任何单节点故障或重启的情况下,YARN 和 HDFS 操作不中断。
作业驱动程序终止:如果作业的正确性依赖驱动程序的成功运行,则您运行的任何作业的驱动程序/主程序仍然可能出现单点故障。通过 Dataproc Jobs API 提交的作业不被视为具备“高可用性”,当运行相应作业驱动程序的主实例节点发生故障时,仍会终止此作业。要使用高可用性 Cloud Dataproc 集群让各个作业拥有针对单节点故障的恢复能力,作业必须满足以下任一条件:1) 在没有同步驱动程序的情况下运行;或者 2) 必须在 YARN 容器内运行驱动程序,并被编写为可以处理驱动程序重启。如需通过示例了解可重启的驱动程序如何在 YARN 容器内运行以实现容错,请参阅在 YARN 上启动 Spark。
可用区级故障:与所有 Managed Service for Apache Spark 集群一样,高可用性集群中的所有节点都位于同一可用区。如果某个故障影响了某可用区中的所有节点,则故障不会得到缓解。
实例名称
默认主实例名为 cluster-name-m;高可用性主实例名为 cluster-name-m-0、cluster-name-m-1、cluster-name-m-2。
Apache ZooKeeper
在高可用性 Managed Service for Apache Spark 集群中,ZooKeeper 组件会自动安装在集群主服务器上。所有主节点都会加入 ZooKeeper 集群,该集群为其他 Hadoop 服务启用自动故障转移功能。
HDFS
在标准 Managed Service for Apache Spark 集群中:
cluster-name-m运行:- NameNode
- 辅助 NameNode
在高可用性 Managed Service for Apache Spark 集群中:
cluster-name-m-0和cluster-name-m-1运行:- NameNode
- ZKFailoverController
- 所有主实例均运行 JournalNode
- 没有辅助 NameNode
如需详细了解组件,请参阅 HDFS 高可用性文档。
YARN
在标准 Managed Service for Apache Spark 集群中,cluster-name-m 运行 ResourceManager。
在高可用性 Managed Service for Apache Spark 集群中,所有主实例都运行 ResourceManager。
如需详细了解组件,请参阅 YARN 高可用性文档。
创建高可用性集群
控制台
- 打开 Managed Service for Apache Spark 创建集群页面。
- 在定义集群形状部分中,选择高可用性。
- 默认情况下,驱动节点设置与主要工作器设置相同。 在其他配置下,您可以修改驱动节点,取消选中将默认驱动节点设为与主要工作器相同复选框,然后指定驱动节点设置。
gcloud 命令
如需使用 gcloud dataproc clusters create 来创建高可用性集群,请运行以下命令:
gcloud dataproc clusters create cluster-name \ --region=region \ --num-masters=3 \ ... other args
REST API
如需创建高可用性集群,请使用 clusters.create API,并将 masterConfig.numInstances 设置为 3。