フレキシブル VM で VM タイプの優先順位を付ける

フレキシブル VM は、Managed Service for Apache Spark クラスタを作成するときに、Managed Service for Apache Spark マスターノード、 プライマリ ワーカーノード、セカンダリ ワーカーノードの VM タイプの優先リストを指定できる Managed Service for Apache Spark の機能です。

フレキシブル VM を使用する理由

以前は、クラスタ作成リクエストの送信時に VM タイプを使用できなかった場合、リクエストは失敗し、リクエスト、スクリプト、コードを更新して「次善の」VM タイプを指定する必要がありました。この再リクエスト プロセスでは、使用可能な VM タイプを指定できるようになるまで、複数回の反復処理が必要になる場合があります。

Managed Service for Apache Spark フレキシブル VM 機能は、ランク付けされた VM リストからマスター、プライマリ、セカンダリ ワーカー VM タイプを選択し、リストされた VM タイプが利用可能な指定されたクラスタ リージョン内のゾーンを検索することで、クラスタ作成リクエストを成功させるのに役立ちます。

制限事項

フレキシブル VM を使用するクラスタは停止できません。

用語

  • VM タイプ: VM インスタンスのファミリー、メモリ容量、CPU コア数。 Managed Service for Apache Spark は、 事前定義された VM タイプとカスタム VM タイプの使用をサポートしています。
  • マスターノードとプライマリ ワーカーノード: クラスタにはマスターノードと 2 つ以上のプライマリ ワーカーがあります。
  • セカンダリ ワーカー: セカンダリ ワーカー は省略可能で、データを保存しません。これらは、処理ノードとしてのみ機能します。 そのため、セカンダリ ワーカーを使用すると、ストレージをスケールすることなく、コンピューティングをスケールできます。 デフォルトのフレキシブル VM セカンダリ ワーカー タイプは Spot VM であり、 プリエンプティブル タイプです( 詳しくはManaged Service for Apache Spark セカンダリ ワーカーをご覧ください)。

用途

  • フレキシブル VM は、Compute Engine 上の Managed Service for Apache Spark 2.0.74+2.1.76+2.2.42+ 以降の イメージ バージョンで使用できます。
  • マスターまたはプライマリ ワーカーの Flex VM を使用したクラスタの作成には時間がかかります(約 32 秒追加)。
  • クラスタ名は 45 文字以内で指定してください。
  • すべての VM タイプで同じディスクタイプが必要です。
  • ランク付けされた VM タイプのリストを最大 5 つ指定できます。リスト内の VM タイプは最大 10 個です。詳細については、フレキシブル VM をリクエストする方法をご覧ください。
  • フレキシブル VM でクラスタを作成するには、 Managed Service for Apache Spark 自動ゾーン プレースメントを使用する必要があります。これにより、 Managed Service for Apache Spark は VM タイプ リクエストを満たす容量を持つゾーンを選択できます。
  • クラスタ作成リクエストに 自動スケーリング ポリシーが含まれている場合、 フレキシブル VM は異なる VM ファミリーから利用できますが、 メモリとコアの数は同じである必要があります。
  • フレキシブル VM をプロビジョニングする場合、Managed Service for Apache Spark は「一致するすべての」 利用可能な予約を消費しますが、「特定の」予約は消費しません( 予約済みインスタンスの消費をご覧ください)。 予約に一致するマシンタイプがランク内で最初に選択され、次に CPU 数が最も多い VM タイプが選択されます。
  • Managed Service for Apache Spark は Google Cloud 割り当て をフレキシブル VM プロビジョニングに適用します。
  • クラスタ内のプライマリ ワーカーとセカンダリ ワーカーの V タイプに異なる CPU とメモリの比率を指定できますが、最小の CPU とメモリの比率が最小のコンテナ単位として使用されるため、パフォーマンスが低下する可能性があります。
  • フレキシブル VM を使用して作成されたクラスタを更新すると、Managed Service for Apache Spark は、クラスタの作成時に指定したフレキシブル VM リストからワーカーを選択して追加します。

フレキシブル VM をリクエストする方法

コンソール、Google Cloud CLI、または Managed Service for Apache Spark API を使用して Managed Service for Apache Spark クラスタを作成するときに、フレキシブル VM を指定できます。 Google Cloud

  • ランク付けされた VM タイプのリストを最大 5 つ指定できます。リスト内の VM タイプは最大 10 個です。優先度が最も高いのは、ランクが最も低いリストです。デフォルトでは、フレキシブル VM リストのランクは 0 です。Managed Service for Apache Spark はリスト内で、未使用の予約を持つ VM タイプを優先し、次に最大の VM サイズを優先します。 同じ CPU 数を持つリスト内の VM タイプは、同じ扱いになります。

コンソール

セカンダリ ワーカー フレキシブル VM を持つクラスタを作成する手順は次のとおりです。

  1. コンソールで Managed Service for Apache Spark [**Compute Engine でクラスタを作成**] ページを開きます。 Google Cloud
  2. デフォルト値がフィールドに入力されている [クラスタの設定] パネルが選択されています。提案された名前やクラスタ リージョンを変更できます。Managed Service for Apache Spark の自動ゾーン プレースメントがフレキシブル VM リストで指定された VM タイプの可用性が最適なゾーンを選択できるように、クラスタの [ゾーン]として [任意]が選択されていることを確認します。
  3. [ノードの構成] パネルを選択します。[セカンダリ ワーカー ノード] セクションで、セカンダリ ワーカーの数とプリエンプティブを指定します。
    • セカンダリ ワーカーのランクごとに [セカンダリ ワーカーを追加] をクリックし、各ランクに含める 1 つ以上のマシンタイプを指定します。
  4. クラスタ作成パネルでクラスタの詳細を確認、指定したら、[作成] をクリックします。

gcloud

gcloud dataproc clusters create コマンドを使用して複数の master-machine-typesworker-machine-typessecondary-worker-machine-types フラグを追加し、マスター、プライマリ、 セカンダリ ワーカーのランク付けされたフレキシブル VM リストを指定します。

次の例では、次の優先度でマスター、プライマリ、セカンダリの VM タイプをリクエストします。

  • 利用可能な場合は e2-standard-8 VM をプロビジョニングします(ランク 0)。e2-standard-8 マシンが利用できない場合は、n2-standard-8 VM をプロビジョニングします(ランク 1)。

セカンダリ ワーカーのタイプが指定されていないため、プリエンプティブル Spot セカンダリ VM がプロビジョニングされます。

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --master-machine-types="type=e2-standard-8,rank=0" \
    --master-machine-types="type=n2-standard-8,rank=1" \
    --num-workers=10 \
    --worker-machine-types="type=e2-standard-8,rank=0" \
    --worker-machine-types="type=n2-standard-8,rank=1" \
    --num-secondary-workers=4 \
    --secondary-worker-machine-types="type=e2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=n2-standard-8,rank=1"

注:

  • --zone="": フレキシブル VM 機能では、Managed Service for Apache Spark が使用可能な VM タイプがあるゾーンを選択できるように、 Managed Service for Apache Spark の自動ゾーン プレースメント が必要です。--zone フラグに空の値("")を渡すと、デフォルトの gcloud config list で指定されたゾーン選択がオーバーライドされます。

API

instanceFlexibilityPolicy.instanceSelectionList を Managed Service for Apache Spark API clusters.create リクエストの一部として使用して、マスター、プライマリ、セカンダリ ワーカーの machineTypes のランク付けされたリストを指定します。

例: 次の JSON スニペットは、ランク 0 とランク 1 のマスター(masterConfig)、プライマリ ワーカー(workerConfig)、セカンダリ ワーカー(secondaryWorkerConfig)のマシンタイプを指定します。clusters.create

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "zoneUri": ""
    },
    "masterConfig": {
      "numInstances": 1,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    },
    "workerConfig": {
      "numInstances": 10,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    },
    "secondaryWorkerConfig": {
      "numInstances": 4,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    }
  }
}

Flex VM のプロパティをオーバーライドする

Managed Service for Apache Spark はクラスタレベルでプロパティを設定します。フレキシブル VM を使用する クラスタを作成するときに、 プライマリ ワーカーとセカンダリ ワーカーの Flex VM タイプのシステム生成プロパティをオーバーライドできます。

gcloud

クラスタの作成時にプロパティをオーバーライドするには、次の構文で --properties フラグを使用します。

--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
  • ROLE は、primary_worker または secondary_worker のいずれかになります。
  • 複数のプロパティはカンマで区切ります。

次の gcloud dataproc clusters create コマンドを実行して、YARN がセカンダリ ワーカーの NodeManager に割り当てる vCPU の数をオーバーライドします。この例では、すべての e2-standard-8 および n2-standard-8 セカンダリ ワーカー VM の yarn-site.xmlyarn.nodemanager.resource.cpu-vcores 値を 6 に設定します。

gcloud dataproc clusters create CLUSTER_NAME \
    --num-workers=10 \
    --num-secondary-workers=4 \
    --worker-machine-types="type=e2-standard-8,rank=0" \
    --worker-machine-types="type=n2-standard-8,rank=1" \
    --master-machine-types="type=e2-standard-8,rank=0" \
    --master-machine-types="type=n2-standard-8,rank=1" \
    --secondary-worker-machine-types="type=e2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=n2-standard-8,rank=1" \
    --region=us-central1 \
    --zone="" \
    --properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6,secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"

API

プロパティをオーバーライドするには、クラスタ作成リクエストの SoftwareConfig オブジェクトの properties フィールドで定義します。

プロパティ キーには次の構文を使用します。

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
  • ROLE は、primary_worker または secondary_worker のいずれかになります。

次の SoftwareConfig オブジェクトは、YARN がセカンダリ ワーカーの NodeManager に割り当てる vCPU の数をオーバーライドします。この例では、すべての e2-standard-8 および n2-standard-8 セカンダリ ワーカー VM の yarn.nodemanager.resource.cpu-vcores 値を 6 に設定します。

{
  "imageVersion":"2.2.42",
  "properties": {
    "secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6",
    "secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6"
  }
}

次のステップ