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