高可用性模式

创建 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-0cluster-name-m-1cluster-name-m-2

Apache ZooKeeper

在高可用性 Dataproc 集群中,ZooKeeper 组件会自动安装在集群的主节点上。所有主节点都会加入 ZooKeeper 集群,该集群为其他 Hadoop 服务启用自动故障切换功能。

HDFS

在标准 Dataproc 集群中:

  • cluster-name-m 运行:
    • NameNode
    • 辅助 NameNode

在高可用性 Dataproc 集群中:

  • cluster-name-m-0cluster-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 个工作器)。