フレキシブル 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 を指定できます。
- クラスタ作成リクエストでは、Spot と非プリエンプティブル セカンダリ ワーカー タイプのいずれかをフレキシブル VM として指定できますが、両方を指定することはできません。セカンダリ ワーカー タイプを指定しない場合、Dataproc はプリエンプティブルである Spot VM を使用します。
最大 5 つのランク付けされた VM タイプのリストを指定できます。リストには最大 10 個の VM タイプを指定できます。詳細については、フレキシブル VM をリクエストする方法をご覧ください。
フレキシブル VM でクラスタを作成するには、Dataproc 自動ゾーン プレースメントを使用する必要があります。これにより、Dataproc は VM タイプ リクエストを満たす容量を持つゾーンを選択できます。
クラスタ作成リクエストに自動スケーリング ポリシーが含まれている場合、フレキシブル VM は異なる VM ファミリーから利用できますが、メモリとコアの数は同じである必要があります。
フレキシブル VM をプロビジョニングする場合、Dataproc は「一致するすべての」利用可能な予約を消費しますが、「特定の」予約は消費しません(予約済みインスタンスの消費をご覧ください)。予約に一致するマシンタイプが最初にランク内で選択され、次に CPU 数が最も多い VM タイプが続きます。
Dataproc は Google Cloud の割り当てをフレキシブル VM プロビジョニングに適用します。
クラスタ内のプライマリ ワーカーとセカンダリ ワーカーの V タイプに異なる CPU とメモリの比率を指定できますが、最小の CPU とメモリの比率が最小のコンテナ単位として使用されるため、パフォーマンスが低下する可能性があります。
フレキシブル VM を使用して作成されたクラスタを更新すると、Dataproc はクラスタの作成時に指定したフレキシブル VM リストからワーカーを選択して追加します。
フレキシブル VM をリクエストする方法
Google Cloud コンソール、Google Cloud CLI、または Dataproc API を使用して Dataproc クラスタを作成するときに、フレキシブル VM を指定できます。
- 最大 5 つのランク付けされた VM タイプのリストを指定できます。リストには最大 10 個の VM タイプを指定できます。ランクの低いリストは最も優先順位が高くなります。デフォルトでは、フレキシブル VM リストのランクは 0 です。Dataproc はリスト内で、未使用の予約を持つ VM タイプを優先し、次に最大の VM サイズを優先します。同じ CPU 数を持つリスト内の VM タイプは同等に扱われます。
コンソール
セカンダリ ワーカーのフレキシブル VM を使用してクラスタを作成するには:
Google Cloud コンソールで、Dataproc の [Compute Engine でクラスタを作成する] ページを開きます。
デフォルト値がフィールドに入力されている [クラスタの設定] パネルが選択されています。提案された名前とクラスタ リージョンを変更したり、他の変更を行ったりできます。Dataproc の自動ゾーン プレースメントがフレキシブル VM リストで指定された VM タイプの可用性が最適なゾーンを選択できるように、クラスタの [ゾーン] として [任意] が選択されていることを確認します。
[ノードの構成] パネルを選択します。[セカンダリ ワーカー ノード] セクションで、セカンダリ ワーカーの数とプリエンプティブを指定します。
- セカンダリ ワーカーのランクごとに [セカンダリ ワーカーを追加] をクリックし、各ランクに含める 1 つ以上のマシンタイプを指定します。
クラスタ作成パネルでクラスタの詳細を確認して指定したら、[作成] をクリックします。
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
VM または 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
構文を使用して SoftwareConfig.properties
を clusters.create
リクエストに追加します。
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"