Dataproc フレキシブル VM

フレキシブル VM は、Dataproc クラスタを作成する時に Dataproc セカンダリ ワーカーVM タイプの優先リストを指定できる Dataproc の機能です。

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

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

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

用語

  • VM タイプ: VM インスタンスのファミリー、メモリ容量、CPU コア数。Dataproc は、事前定義された VM タイプとカスタム VM タイプの使用をサポートしています。

  • セカンダリ ワーカー: セカンダリ ワーカーはデータを保存しません。これらは、処理ノードとしてのみ機能します。そのため、セカンダリ ワーカーを使用すると、ストレージをスケールすることなく、コンピューティングをスケールできます。

制限事項と考慮事項

  • フレキシブル VM は、Dataproc on Compute Engine の 2.0.74+2.1.22+ 以降の Dataproc on Compute Engine のイメージ バージョンで使用できます。

  • セカンダリ ワーカーにのみフレキシブル VM を指定できます。

  • ランク付けされた VM タイプのリストは最大 5 つ指定でき、リスト内の VM タイプは最大 10 個です。詳細については、フレキシブル VM をリクエストする方法をご覧ください。

  • フレキシブル VM でクラスタを作成するには、Dataproc 自動ゾーン プレースメントを使用する必要があります。これにより、Dataproc は VM タイプ リクエストを満たす容量を持つゾーンを選択できます。

  • クラスタ作成リクエストに自動スケーリング ポリシーが含まれている場合、フレキシブル VM は異なる VM ファミリーから利用できますが、メモリとコアの数は同じである必要があります。

  • フレキシブル VM をプロビジョニングする場合、Dataproc は「一致するすべての」利用可能な予約を消費しますが、「特定の」予約は消費しません(予約済みインスタンスの消費をご覧ください)。予約に一致するマシンタイプがランク内で最初に選択され、次に CPU 数が最も多い VM タイプが選択されます。

  • Dataproc は Google Cloud の割り当てをフレキシブル VM プロビジョニングに適用します。

  • クラスタ内のプライマリ ワーカーとセカンダリ ワーカーの V タイプに異なる CPU とメモリの比率を指定できますが、最小の CPU とメモリの比率が最小のコンテナ単位として使用されるため、パフォーマンスが低下する可能性があります。

  • フレキシブル VM を使用して作成されたクラスタを更新すると、クラスタの作成時に指定したフレキシブル VM リストからワーカーが選択され、追加されます。

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

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

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

Console

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

  1. Google Cloud コンソールで、Dataproc の [Compute Engine にクラスタを作成する] ページを開きます。

  2. デフォルト値がフィールドに入力されている [クラスタの設定] パネルが選択されています。提案された名前やクラスタ リージョンを変更できます。Dataproc の自動ゾーン プレースメントがフレキシブル VM リストで指定された VM タイプの可用性が最適なゾーンを選択できるように、クラスタの [ゾーン] として [任意] が選択されていることを確認します。

  3. [ノードの構成] パネルを選択します。[セカンダリ ワーカー ノード] セクションで、セカンダリ ワーカーの数とプリエンプティブを指定します。

    • セカンダリ ワーカーのランクごとに [セカンダリ ワーカーを追加] をクリックし、各ランクに含める 1 つ以上のマシンタイプを指定します。
  4. クラスタ作成パネルでクラスタの詳細を確認、指定したら、[作成] をクリックします。

gcloud

gcloud dataproc clusters create コマンドを使用して複数の secondary-worker-machine-types フラグを追加し、Dataproc セカンダリ ワーカーにランキングされるフレキシブル VM リストを指定します。デフォルトのフレキシブル VM セカンダリ ワーカー タイプは Spot であり、プリエンプティブル タイプです。

次の gcloud CLI の例では、Dataproc はまず n2-standard-8 VM を使用してセカンダリ ワーカーをプロビジョニングしようとします(ランク 0)。n2-standard-8 マシンを使用できない場合、Dataproc は e2-standard-8 または t2d-standard-8 VM(ランク 1)を使用してセカンダリ ワーカーをプロビジョニングしようとします。

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

注:

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

  • Dataproc は、マシンのコアとメモリに基づいてコンポーネント role プロパティを生成します。これらのシステム生成のプロパティは、次の構文を使用して --properties フラグでオーバーライドできます。

    --properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
    

    サポートされているロールは secondary_worker ロールのみです。

    次の例では、--properties フラグによって、セカンダリ ワーカー ノードに割り当てられた e2-standard-8 マシンのコア数が 8 から 6 に変更されます。

    --properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
    

API

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

例:

Dataproc clusters.createリクエスト本文 の次の JSON スニペットは、ランク 0 とランク 1 のセカンダリ ワーカー マシンタイプを指定します。

"config": {
  "secondaryWorkerConfig": {
    "instanceFlexibilityPolicy": {
      "instanceSelectionList": [
        {
          "machineTypes": [
            "n1-standard-4",
            "n2-standard-4"
          ],
          "rank": 0
        },
        {
          "machineTypes": [
            "e2-standard-4",
            "n2d-standard-4"
          ],
          "rank": 1
        }
      ]
    }
  }
}

クラスタ プロパティを使用してコンポーネントのロールをカスタマイズする: Dataproc は、VM のコアとメモリに基づいてコンポーネントの role プロパティを生成します。これらのシステム生成プロパティをオーバーライドするには、次の key=value 構文を使用して、clusters.create リクエストに SoftwareConfig.properties を追加します。

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

サポートされているロールは secondary_worker ロールのみです。

次の例では、properties フィールドによって、e2-standard-8 VM のセカンダリ ワーカー ノードに割り当てられたコア数が 8 から 6 に変更されます。

"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"