建立 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-0
、cluster-name-m-1
、cluster-name-m-2
。
Apache ZooKeeper
在高可用性 Dataproc 叢集中,系統會自動在叢集主節點上安裝 Zookeeper 元件。所有主要執行個體都會參與 ZooKeeper 叢集,支援針對其他 Hadoop 服務啟用自動容錯移轉。
HDFS
在標準 Dataproc 叢集中:
cluster-name-m
runs:- 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 「Create a cluster」(建立叢集) 頁面的「Set up cluster」(設定叢集) 面板中,選取「High Availability (3 masters, N workers)」(高可用性 (3 個主要節點,N 個工作站))。