フレキシブル 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 を持つクラスタを作成する手順は以下のとおりです。
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
または 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"