支援的應用程式和功能 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

支援的應用程式和功能

本主題提供有關 Amazon EMR 叢集 ResourceManager 中 HDFS NameNode 和 YARN 的 Hadoop 高可用性功能的相關資訊,以及高可用性功能如何與開放原始碼應用程式和其他 Amazon EMR 功能搭配使用。

高可用性 HDFS

具有多個主節點的 Amazon EMR 叢集可在 Hadoop 中啟用 HDFS NameNode 高可用性功能。如需詳細資訊,請參閱 HDFS 高可用性

在 Amazon EMR 叢集中,會將兩個或多個獨立節點設定為 NameNodes。一個處NameNode 於一個active狀態,其他人處於一個standby狀態。如果節點出現active NameNode 故障,Amazon EMR 會啟動自動 HDFS 容錯移轉程序。具有的節點standbyNameNode 會變成active並接管叢集中的所有用戶端作業。接著,Amazon EMR 會將故障的節點取代為新節點,而這個重新加入的節點狀態將是 standby

注意

在 Amazon EMR 版本 5.23.0 直至並包括 5.30.1,三個主要節點中只有兩個運行 HDFS。 NameNode

如果您需要找出哪一 NameNode 個active,您可以使用 SSH 連接到叢集中的任何主節點,並執行下列命令:

hdfs haadmin -getAllServiceState

輸出會列出安裝 NameNode 的節點及其狀態。例如

ip-##-#-#-##1.ec2.internal:8020 active ip-##-#-#-##2.ec2.internal:8020 standby ip-##-#-#-##3.ec2.internal:8020 standby

高可用性紗線 ResourceManager

具有多個主要節點的 Amazon EMR 叢集可在 Hadoop 中啟用 YARN ResourceManager 高可用性功能。如需詳細資訊,請參閱ResourceManager 高可用性

在具有多個主要節點的 Amazon EMR 叢集中,YARN ResourceManager 會在所有三個主要節點上執行。一 ResourceManager 個active處於狀態,另外兩個standby處於狀態。如果主節點active ResourceManager 故障,Amazon EMR 會啟動自動容錯移轉程序。具有接管所有操作的主節點。standby ResourceManager Amazon EMR 會以新的主節點取代故障的主節點,然後將 ResourceManager 仲裁重新連接為. standby

您可以連接到任何主節點的「http://:8088/cluster master-public-dns-name」,它會自動將您引導到資源管理器。active若要找出處於 active 狀態的資源管理員,則可使用 SSH 連接至叢集中的任何主節點,然後執行下列命令,即可取得三個主節點的清單及其狀態:

yarn rmadmin -getAllServiceState

具有多個主節點的 Amazon EMR 叢集中支援的應用程式

您可以在具有多個主節點的 Amazon EMR 叢集上安裝和執行下列應用程式。每個應用程式的主節點容錯移轉程序各有不同。

應用程式 主節點容錯移轉期間的可用性 備註
Flink

可用性不會受到主節點容錯移轉影響

Amazon EMR 上的 Flink 作業以 YARN 應用程式執行。Flink 作為 YARN ApplicationMasters 在核心節點上JobManagers 運行。不JobManager 受主節點容錯移轉程序的影響。

如果您使用 Amazon EMR 5.27.0 或更早版本,則 JobManager 是單點故障。失 JobManager 敗時,它會遺失所有工作狀態,而且不會繼續執行中的工作。您可以設定應用程式嘗試計數、檢查點,以及啟用 ZooKeeper 為 Flink 的狀態儲存,以啟用 JobManager 高可用性。如需詳細資訊,請參閱在具有多個主節點的 Amazon EMR 叢集上設定 Flink

從 Amazon EMR 版本 5.28.0 開始,不需要手動設定即可啟用 JobManager 高可用性。

Ganglia

可用性不會受到主節點容錯移轉影響

Ganglia 可在所有主節點上使用,因此 Ganglia 在主節點容錯移轉程序期間仍可繼續執行。

Hadoop

高可用性

當主 ResourceManager 動主節點發生故障時,HDFS NameNode 和 YARN 會自動容錯移轉到待命節點。

HBase

高可用性

作用中的主節點故障時,HBase 會自動容錯移轉至備用節點。

如果要透過 REST 或 Thrift 伺服器連接至 HBase,您必須在作用中主節點故障時切換至另一個主節點。

HCatalog

可用性不會受到主節點容錯移轉影響

HCatalog 是以叢集外部的 Hive 中繼存放區為基礎建置而成,因此 HCatalog 在主節點容錯移轉程序期間仍可繼續使用。

JupyterHub

高可用性

JupyterHub 會安裝在所有三個主要執行個體上。強烈建議您設定筆記本持久性,以防止筆記本在主節點故障時遺失。如需詳細資訊,請參閱在 Amazon S3 中設定筆記本的持久性

Livy

高可用性

所有三個主節點上均已安裝 Livy。作用中的主節點故障時,您就無法存取目前 Livy 工作階段,且需要在不同的主節點或新的替換節點上建立新的 Livy 工作階段。

Mahout

可用性不會受到主節點容錯移轉影響

由於 Mahout 沒有常駐程式,其不會受到主節點容錯移轉程序影響。

MXNet

可用性不會受到主節點容錯移轉影響

由於 MXNet 沒有常駐程式,其不會受到主節點容錯移轉程序影響。

Phoenix

高可用性

鳳凰只在三個主要節點之一上 QueryServer 運行。所有三個主機上的鳳凰都配置為連接鳳凰城 QueryServer。您可以使用 /etc/phoenix/conf/phoenix-env.sh 檔案尋找 Phoenix 的 Query Server 的私有 IP

Pig

可用性不會受到主節點容錯移轉影響

由於 Pig 沒有常駐程式,其不會受到主節點容錯移轉程序影響。

Spark

高可用性

所有 Spark 應用程式都會在 YARN 容器中執行,且可依照與 YARN 高可用性功能相同的方式來回應主節點容錯移轉。

Sqoop

高可用性

依據預設,sqoop-job 和 sqoop-metastore 將資料 (作業描述) 儲存在執行命令之主節點的本機磁碟上,如果您要將中繼存放區資料儲存在外部資料庫,請參閱 apache Sqoop 文件

Tez

高可用性

Tez 容器會在 YARN 上執行,因此 Tez 在主節點容錯移轉程序期間的行為方式與 YARN 相同。

TensorFlow

可用性不會受到主節點容錯移轉影響

由於沒 TensorFlow 有常駐程式,因此不會受到主要節點容錯移轉程序的影響。

Zeppelin

高可用性

所有三個主節點上均已安裝 Zeppelin。依據預設,Zeppelin 會將筆記和解譯器組態存放於 HDFS 以防止資料遺失。解譯器工作階段會在所有三個主要執行個體中完全隔離。主節點故障時,工作階段資料將會遺失。建議不要在不同的主要執行個體上同時修改相同的筆記。

ZooKeeper

高可用性

ZooKeeper 是 HDFS 自動容錯移轉功能的基礎。 ZooKeeper 提供高可用性服務,用於維護協調資料、通知用戶端該資料的變更,以及監視用戶端是否有失敗。如需詳細資訊,請參閱 HDFS 自動容錯移轉

若要在具有多個主節點的 Amazon EMR 叢集中執行下列應用程式,您必須設定外部資料庫。外部資料庫位於叢集之外,因此資料在主節點容錯移轉程序期間不會變動。針對下列應用程式,服務元件會在主節點容錯移轉程序期間自動復原,但作用中的作業可能會失敗,需要重試。

應用程式 主節點容錯移轉期間的可用性 備註
Hive

唯有服務元件可維持高可用性

Hive 需要外部中繼存放區。這必須是 MySQL 外部中繼存放區,因為多主機叢集不支援 PostgreSQL。如需詳細資訊,請參閱設定適用於 Hive 的外部中繼存放區

Hue

唯有服務元件可維持高可用性

Hue 需要外部資料庫。如需詳細資訊,請參閱將 Hue 與 Amazon RDS 中的遠端資料庫搭配使用

Oozie

唯有服務元件可維持高可用性

需要 Oozie 的外部資料庫。如需詳細資訊,請參閱將 Oozie 與 Amazon RDS 中的遠端資料庫搭配使用

OOzie 伺服器和 oozie 用戶端安裝在所有三個主節點上。依據預設,oozie-clients 設定為連接到正確的 oozie-server。

PrestoDB 或 PrestoSQL/Trino

唯有服務元件可維持高可用性

PrestoDB 需要外部 Hive 中繼存放區 (Amazon EMR 6.1.0-6.3.0 上的 PrestoSQL 或 Amazon EMR 6.4.0 及更新版本上的 Trino)。您可以使用普雷斯托與 AWS Glue 數據目錄使用外部 MySQL 數據庫蜂巢

Presto CLI 安裝在所有三個主節點上,因此您可以使用它從任何主節點存取 Presto Coordinator。Presto Coordinator 只安裝在一個主節點上。您可以透過呼叫 Amazon EMR describe-cluster API 並讀取回應中 MasterPublicDnsName 欄位的傳回值,尋找安裝 Presto Coordinator 的主節點的 DNS 名稱。

注意

在主節點故障的情況下,Java 資料庫連線 (JDBC) 或開放式資料庫連線 (ODBC) 會終止與主節點的連線。因為 Hive 中繼存放區常駐程式可在所有主節點上執行,您仍能連接至任何剩餘的主節點以繼續工作。或者,您可以等待系統取代故障的主節點。

Amazon EMR 功能在具多個主節點叢集中的運作方式

使用 SSH 連接至主節點

您可以使用 SSH 連接至 Amazon EMR 叢集中三個主節點的任一個,如同連接至單一主節點一樣。如需詳細資訊,請參閱使用 SSH 連接至主節點

如果主節點故障,與該主節點的 SSH 連線就會結束。若要繼續進行工作,您可以連接至另外兩個主節點中的其中一個節點。或者,您可以在 Amazon EMR 將故障的主節點取代為新主節點後,再存取新的主節點。

注意

替換主節點會維持先前主節點的私有 IP 地址,但替換主節點的公有 IP 地址可能會變更。您可以在主控台中擷取新的 IP 地址,或使用 AWS CLI 中的 describe-cluster 命令加以擷取。

NameNode 僅在兩個主要節點上執行。不過,您可以執行 hdfs CLI 命令並操作相關作業,藉此存取所有三個主節點上的 HDFS。

在具有多個主節點的 Amazon EMR 叢集中使用步驟

您可以將步驟提交至具有多個主節點的 Amazon EMR 叢集,就如同在具有單一主節點叢集中使用步驟的方式一樣。如需詳細資訊,請參閱將工作提交至叢集

以下是在具有多個主節點的 Amazon EMR 叢集中使用步驟時的考量:

  • 如果主節點故障,則主節點上執行的步驟會標記為 FAILED,且在本機寫入的任何資料都會遺失。不過,FAILED 狀態可能無法反映各步驟的實際狀態。

  • 如果執行中的步驟在主節點故障的情況下啟動 YARN 應用程式,該步驟會繼續進行並成功完成,這是因為系統會自動執行主節點容錯移轉。

  • 建議您參考工作的輸出結果,以查看各步驟狀態。例如, MapReduce 工作會使用_SUCCESS檔案來判斷工作是否成功完成。

  • 建議您將 ActionOnFailure 參數設定為「繼續」或「取消 _ 和等待」,而不是「終止 _ 工作流程」或「終止 _ 叢集」。

自動終止保護

Amazon EMR 會自動為具有多個主節點的所有叢集啟用終止保護,並覆寫您在建立叢集時提供的任何步驟執行設定。您可以在叢集啟動之後停用終止保護。請參閱對執行中的叢集設定終止保護。若要關閉具有多個主節點的叢集,您必須先修改叢集屬性以停用終止保護。如需說明,請參閱終止具有多個主節點的 Amazon EMR 叢集

如需有關終止保護的詳細資訊,請參閱 使用終止保護

具有多個主節點的 Amazon EMR 叢集中不支援的功能

下列 Amazon EMR 功能目前在具有多個主節點的 Amazon EMR 叢集中不可用:

  • EMR Notebooks

  • 持續性 Spark 歷程記錄伺服器的一鍵式存取功能

  • 持續應用程式使用者介面

  • 具有多個主要節點的 Amazon EMR 叢集或與 AWS Lake Formation 整合的 Amazon EMR 叢集目前無法使用一鍵式存取持續性應用程式使用者界面。

注意

若要在叢集中使用 Kerberos 身分驗證,請務必設定外部 KDC。

從 Amazon EMR 版本 5.27.0 開始,您可以在具有多個主節點的 Amazon EMR 叢集上設定 HDFS 透明加密。如需詳細資訊,請參閱在 Amazon EMR 上使用 HDFS 中的透明加密