高可用性モード

Google Cloud Dataproc クラスタを作成するときに、クラスタ内のマスター インスタンスの数を指定することにより、クラスタを Hadoop 高可用性(HA)モードにすることができます。マスターの数はクラスタの作成時にしか指定することができません。

現在、Dataproc は次の 2 つのマスター構成をサポートしています。

  • 1 マスター(デフォルト、非 HA)
  • 3 マスター(Hadoop HA)

デフォルト モードと Hadoop 高可用性モードの比較

  • Compute Engine の障害: 予期しない Compute Engine の障害が発生するまれな場合は、Dataproc インスタンスでマシンが再起動します。Dataproc のデフォルトの単一マスター構成は、このようなケースでは復旧して新しい作業の処理を継続するように設計されていますが、処理中のジョブはやむなく中断するため再試行する必要があり、HDFS は単一の NameNode が完全に復旧するまでアクセスできなくなります。HA モードでは、単一ノードの障害や再起動で YARN と HDFS のオペレーションが中断しないように、HDFS 高可用性YARN 高可用性が構成されます。

  • ジョブドライバ解除: ジョブの正確性が正常に動作しているドライバ プログラムによって決まる場合、実行するジョブのドライバ / メイン プログラムでは引き続き潜在的な単一障害点が示されます。Dataproc Jobs API 経由で送信されたジョブは、「高可用性」と見なされないため、対応するジョブ ドライバ プログラムを実行しているマスターノードの障害発生時に中断される可能性があります。個別のジョブが HA Cloud Dataproc クラスタを使用して単一ノード障害から復旧するためには、ジョブが 1) 同期ドライバ プログラムを使用せずに動作するか、2) YARN コンテナ内でドライバ プログラムを直接実行し、ドライバ プログラムの再起動を処理するように作られている必要があります。フォールト トレラントのために、YARN コンテナ内で再起動可能なドライバ プログラムを実行する方法の例については、YARN 上での Spark の起動をご覧ください。

  • ゾーン障害: すべての Dataproc クラスタの場合と同様、高可用性クラスタ内のすべてのノードは同じゾーンに存在します。ゾーン内のすべてのノードに影響する障害がある場合、その障害は軽減されません。

インスタンス名

デフォルト マスターの名前は cluster-name-m で、HA マスターの名前は cluster-name-m-0cluster-name-m-1cluster-name-m-2 です。

Apache ZooKeeper

HA 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 を使用して HA クラスタを作成するには、次のコマンドを実行します。
gcloud dataproc clusters create cluster-name \
    --region=region \
    --num-masters=3 \
    ... other args

REST API

HA クラスタを作成するには、clusters.create API を使用し、masterConfig.numInstances3 に設定します。

Console

HA クラスタを作成するには、Dataproc の [クラスタの設定] パネルの [クラスタタイプ] セクションで、[高可用性(マスター 3 個、ワーカー N 個)] を選択します。クラスタを作成するをご覧ください。