高可用性模式

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

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

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

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

  • Compute Engine 失敗:如果發生非預期的 Compute Engine 失敗 (極少見),則 Dataproc 執行個體會遇到機器重新啟動的情況。Dataproc 預設的單一主要執行個體設定即是針對這類狀況設計,其可復原並繼續處理新工作,但是傳輸中的工作必定會失敗而必須重試;此外,單一 NameNode 在重新啟動時完全復原之前,將無法存取 HDFS。在高可用性模式中,HDFS 高可用性YARN 高可用性 會啟用,讓 YARN 和 HDFS 作業不會受到干擾,即使發生單一節點無法運作或重新開機的情況也沒問題。

  • 工作驅動程式終止:如果工作的正確性取決於是否成功執行驅動程式,則您執行的任何工作的驅動程式/主要程式仍意味著可能發生單點故障的問題。透過 Dataproc Jobs API 提交的工作不會被視為「高可用性」,並且仍會在執行對應工作驅動程式的主節點故障時終止。為了讓個別工作能夠從使用高可用性 Cloud 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 元件會自動安裝在叢集主要節點上。所有主要執行個體都會參與支援針對其他 Hadoop 服務啟用自動容錯移轉的 ZooKeeper 叢集。

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 masters, N workers)」(高可用性 (3 個主要節點,N 個工作站)」。