このトピックでは、E-MapReduce (EMR) の非高可用性 (非 HA) クラスターと HA クラスターにおける Hadoop 分散ファイルシステム (HDFS) コンポーネントのデプロイメントトポロジーについて説明します。
非 HA クラスター
非 HA クラスターでは、単一の NameNode がすべての読み取りおよび書き込みリクエストを処理します。 Secondary NameNode は同じマスターノード上で NameNode と共に実行されますが、フェールオーバー機能は提供しません。その唯一の役割は、EditLog ファイルを定期的に FsImage ファイルにマージして、NameNode の再起動を高速化することです。
| ノード | コンポーネント | 説明 |
|---|---|---|
| master-1-1 (一部のバージョンでは emr-header-1) | NameNode | 外部に読み取りおよび書き込みサービスを提供します。 |
| master-1-1 (一部のバージョンでは emr-header-1) | Secondary NameNode | EditLog ファイルを FsImage ファイルにマージして、NameNode の再起動を高速化します。 フェールオーバー機能は提供しません。 |
| core-1-1 または emr-worker-x | DataNode | ノードのデータディスク上で HDFS データブロックを管理および保存します。 |
HA クラスター
HA クラスターでは、2 つ以上の NameNode がアクティブ/スタンバイ構成で実行されます。 アクティブ状態の NameNode のみが読み取りおよび書き込みサービスを提供します。 アクティブな NameNode が利用不可になると、ZKFailoverController (ZKFC) はヘルスチェックを通じて障害を検出し、ZooKeeper で排他ロックを取得してフェールオーバーをトリガーし、スタンバイ状態の NameNode をアクティブ状態に昇格させます。
JournalNode はスタンバイ状態の NameNode を同期させます。アクティブな NameNode はすべての名前空間の変更を JournalNode のクォーラムに書き込み、スタンバイ状態の NameNode はそれらの変更を継続的に読み取ります。 3 つの JournalNode からなるグループは 1 つの障害に耐えることができます。つまり、少なくとも 2 つの JournalNode が正常で書き込み可能である限り、NameNode はリクエストを処理できます。
| ノード | コンポーネント | 説明 |
|---|---|---|
| master-1-1 (一部のバージョンでは emr-header-1) | ZKFailoverController (ZKFC) | ローカルの NameNode のヘルス状態を監視し、ZooKeeper セッションを管理して、プライマリ/セカンダリの選出とスイッチオーバーを実行します。 |
| master-1-1 (一部のバージョンでは emr-header-1) | NameNode | アクティブ状態の NameNode は読み取りおよび書き込みサービスを提供します。 プライマリ NameNode のみが外部に読み取りおよび書き込みサービスを提供できます。 スタンバイ状態の NameNode は同期を維持し、フェールオーバーに備えます。 |
| master-1-1 (一部のバージョンでは emr-header-1) | JournalNode | アクティブな NameNode によって書き込まれた EditLog ファイルを保存します。 通常、3 つの JournalNode が 1 つのグループとしてデプロイされます。NameNode がリクエストを処理するには、少なくとも 2 つが正常である必要があります。 |
| master-1-1 (一部のバージョンでは emr-header-1) | ZooKeeper | ZKFC が選出に使用し、他の EMR コンポーネントが HA 状態管理に使用する分散協調サービスを提供します。 |
| master-1-2 (一部のバージョンでは emr-header-2) | ZKFC | master-1-1 上のロールと同じです。 |
| master-1-2 (一部のバージョンでは emr-header-2) | NameNode | master-1-1 上のロールと同じです。 |
| master-1-2 (一部のバージョンでは emr-header-2) | JournalNode | master-1-1 上のロールと同じです。 |
| master-1-2 (一部のバージョンでは emr-header-2) | ZooKeeper | master-1-1 上のロールと同じです。 |
| master-1-3 (一部のバージョンでは emr-header-3 または emr-worker-1) | \*ZKFC | master-1-1 上のロールと同じです。 説明 デフォルトでは、EMR V5.8.0 以降で Hadoop 3.x を使用する HA クラスターには、3 つの ZKFC と NameNode のペアがデプロイされます。 1 つのペアは master-1-3 にデプロイされます。 |
| master-1-3 (一部のバージョンでは emr-header-3 または emr-worker-1) | \*NameNode | master-1-1 上のロールと同じです。 説明 デフォルトでは、EMR V5.8.0 以降で Hadoop 3.x を使用する HA クラスターには、3 つの ZKFC と NameNode のペアがデプロイされます。 1 つのペアは master-1-3 にデプロイされます。 |
| master-1-3 (一部のバージョンでは emr-header-3 または emr-worker-1) | JournalNode | master-1-1 上のロールと同じです。 |
| master-1-3 (一部のバージョンでは emr-header-3 または emr-worker-1) | ZooKeeper | master-1-1 上のロールと同じです。 |
| core-1-1 または emr-worker-x | DataNode | ノードのデータディスク上で HDFS データブロックを管理および保存します。 |
\* EMR V5.8.0 以降の Hadoop 3.x ではデフォルトでデプロイされます。