高可用性模式

建立 Cloud Dataproc 叢集時,您可以透過指定叢集中主要執行個體的數量,讓叢集處於 Hadoop 高可用性 (HA) 模式。只有在建立叢集時,您才能夠指定主要執行個體的數量。

Dataproc 目前支援兩種主要執行個體設定:

  • 1 個主要執行個體 (預設,非高可用性)
  • 3 個主要執行個體 (Hadoop 高可用性)

預設模式和 Hadoop 高可用性模式的比較

  • Compute Engine 故障:在罕見情況下,若 Compute Engine 發生意外故障,Dataproc 執行個體會重新啟動。Dataproc 預設的單一主要執行個體設定即是針對這類狀況設計,其可復原並繼續處理新工作,但是傳輸中的工作必定會失敗而必須重試;此外,單一 NameNode 在重新啟動時完全復原之前,將無法存取 HDFS。在高可用性模式下,系統會啟用 HDFS 高可用性YARN 高可用性,即使有單一節點故障或重新啟動,仍可維持 YARN 與 HDFS 運作不受干擾。

  • 工作驅動程式終止: 如果工作的正確性取決於是否成功執行驅動程式,則您執行的任何工作的驅動程式/主要程式仍可能構成單點故障的風險。透過 Dataproc Jobs API 提交的工作不會被視為「高可用性」,並且仍會在執行對應工作驅動程式的主要節點故障時終止。為了讓個別工作能夠從使用高可用性 Dataproc 叢集的單一節點故障情況復原,則工作必須 1) 在沒有同步驅動程式的情況下執行,或是 2) 在 YARN 容器內執行驅動程式本身,並被寫入以處理重新啟動驅動程式的作業。請參閱「在 YARN 上啟動 Spark」一文中的範例,瞭解如何在 YARN 容器內部執行可重新啟動的驅動程式,以實現容錯能力。

  • 可用區故障:與所有 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 「Create a cluster」(建立叢集) 頁面「Set up cluster」(設定叢集) 面板的「Cluster type」(叢集類型) 區段,選取「High Availability」(高可用性) (3 個主要執行個體、N 個 worker)。