Cloud Dataproc カスタム イメージの作成

Cloud Dataproc クラスタには、ユーザーがプリインストールしたパッケージを含むカスタム イメージをプロビジョニングできます。次の手順では、カスタム イメージを作成して、Cloud Dataproc クラスタにインストールする方法について説明しています。

注:

  • このドキュメントの説明は、Linux オペレーティング システムのみに適用されます。その他のオペレーティング システムは、今後の Cloud Dataproc リリースでサポートされる可能性があります。
  • カスタム イメージを構築するには、Cloud Dataproc ベースイメージから始める必要があります(現在、Debian と Ubuntu のベースイメージがサポートされています)。

始める前に

プロジェクトの設定

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. Cloud Dataproc API、Compute Engine API、Cloud Storage API を有効にします。

    APIを有効にする

  5. Cloud SDK をインストールして初期化します。
  6. Python 2.7+ をインストールします。
  7. Daisy をダウンロードし、次のコマンドを実行してその属性を変更し、実行できるようにします。
    chmod +x daisy

プロジェクトで Cloud Storage バケットを作成する

  1. GCP Console で、Cloud Storage ブラウザに移動します。

    Cloud Storage ブラウザに移動

  2. [バケットを作成] をクリックします。
  3. [バケットを作成] ダイアログ内で、以下の属性を指定します。
  4. [作成] をクリックします。

カスタム イメージの生成

Python プログラムの generate_custom_image.py を使用して、Compute Engine イメージ ファイルを作成し、Cloud Storage バケットにストリーミングします。

仕組み

Python プログラム generate_custom_image.py では、Compute Engine で複数ステップのワークフローを実行するためのツールである Daisy を使用して、カスタム イメージを作成します。このプログラムは一時的な Compute Engine VM インスタンスを起動し、これを使用してカスタム パッケージを含む Cloud Dataproc カスタム イメージを作成します。カスタム イメージは保存され、Cloud Dataproc クラスタを作成するために使用できます。一時的な VM は、カスタム イメージの作成後に削除されます。

コードの実行

GitHub の GoogleCloudPlatform/cloud-dataproc/custom-images/ で、ファイルを fork またはクローンします。次に、generate_custom_image.py プログラムを実行して、Cloud Dataproc によりカスタム イメージを生成し、保存します。

python generate_custom_image.py \
    --image-name custom_image_name \
    --dataproc-version Cloud Dataproc version (example: "1.2.22") \
    --customization-script local path to your custom script \
    --daisy-path local path to the downloaded daisy binary \
    --zone Compute Engine zone to use for the location of the temporary VM \
    --gcs-bucket URI (gs://bucket-name) of a Cloud Storage bucket in your project \
    [--no-smoke-test: "true" or "false" (default: "false"]

必須フラグ

  • --image-name: カスタム イメージの出力名(スペースを含めません。下線は使用できます)。
  • --dataproc-version: カスタム イメージで使用する Cloud Dataproc イメージ バージョン。バージョンは「x.y.z」形式で指定します(例: 1.2.22)。
  • --customization-script: ツールを実行したときに、カスタム パッケージがインストールされたり、その他のカスタマイズが行われたりする、スクリプトのローカルパス。このスクリプトは、カスタム イメージを作成するために一時的な VM でのみ実行されることに注意してください。カスタム イメージを使用してクラスタを作成するときに実行するその他の初期化アクションには、異なる初期化スクリプトを指定できます。
  • --daisy-path: 始める前にでダウンロードした daisy バイナリのローカルパス。
  • --zone: Compute Engine ゾーンgenerate_custom_image.py はここに、カスタム イメージを作成するために使用する一時的な VM を作成します。
  • --gcs-bucket: gs://bucket-name 形式の URI。これは、プロジェクトで Cloud Storage バケットを作成するで作成した Cloud Storage バケットを指します。generate_custom_image.py は、このバケットにログファイルを書き込みます。

オプション フラグ

  • --no-smoke-test: デフォルト値は「false」です。これはオプションのフラグで、「true」に設定すると、新しく作成されたカスタム イメージのスモークテストを無効にできます。スモークテストでは、新しく作成されたイメージを使用して Cloud Dataproc のテストクラスタが作成され、小さいジョブが実行され、テストの終了時にクラスタが削除されます。スモークテストは、新しく作成されたカスタム イメージによって正常に機能する Cloud Dataproc クラスタを作成できることを検証するために、デフォルトで実行されます。この手順を無効にすると、カスタム イメージのビルドプロセスが短縮されますが、これは推奨されません。

gcloud コマンドが正常に実行されると、カスタム イメージの imageURI がターミナル ウィンドウの出力に一覧表示されます(完全な imageUri太字で示されています)。

...
managedCluster:
    clusterName: verify-image-20180614213641-8308a4cd
    config:
      gceClusterConfig:
        zoneUri: zone
      masterConfig:
        imageUri: https://www.googleapis.com/compute/beta/projects/project-id/global/images/custom-image-name
...

INFO:__main__:Successfully built Dataproc custom image: custom-image-name
INFO:__main__:

#####################################################################
  WARNING: DATAPROC CUSTOM IMAGE 'custom-image-name'
           WILL EXPIRE ON 2018-07-14 21:35:44.133000.
#####################################################################

カスタム イメージの使用

Cloud Dataproc クラスタを作成するときに、カスタム イメージを指定します。カスタム イメージは Cloud Compute イメージに保存され、作成日から 60 日間、Cloud Dataproc クラスタの作成に利用できます(60 日間の有効期限後にカスタム イメージを使用する方法については、期限切れのカスタム イメージを使用してクラスタを作成する方法をご覧ください)。

カスタム イメージの URI

カスタム イメージの imageUri をクラスタ作成オペレーションに渡します。この URI は、次の 3 つのいずれかの方法で指定できます。

  1. 完全 URI:
    https://www.googleapis.com/compute/beta/projects/project-id/global/images/custom-image-name
  2. 部分 URI: projects/project-id/global/images/custom-image-name
  3. 省略名: custom-image-name

カスタム イメージ URI の検索方法

gcloud コマンド

次の gcloud コマンドを実行して、カスタム イメージの名前を一覧表示します。

gcloud compute images list

カスタム イメージの名前を次の gcloud コマンドに渡し、カスタム イメージの URI(selfLink)を一覧表示します。

gcloud compute images describe custom-image-name
...
name: custom-image-name
selfLink: https://www.googleapis.com/compute/v1/projects/project-id/global/images/custom-image-name
...

Console

  1. GCP Console で [Compute Engine] → [イメージ] ページを開き、イメージの名前をクリックします。イメージのフィルタ用テキスト ボックスにクエリを挿入して、表示されるイメージの数を制限できます。
  2. イメージの詳細ページが開きます。[同等の REST] をクリックします。
  3. REST レスポンスには、イメージの URI である selfLink など、イメージに関する詳細情報が一覧表示されます。
    {
      ...
      "name": "my-custom-image",
      "selfLink": "projects/my-project-id/global/images/my-custom-image",
      "sourceDisk": ...,
      ...
    }
    

カスタム イメージを使用したクラスタの作成

カスタム イメージを使用したマスターノードとワーカーノードからなるクラスタを作成するには、gcloud コマンドライン ツール、Cloud Dataproc API、Google Cloud Platform Console を使用できます。

gcloud コマンド

カスタム イメージで Cloud Dataproc クラスタを作成するには、--image フラグを指定した dataproc clusters create コマンドを使用します。 例:
gcloud dataproc clusters create cluster-name \
    --image=custom-image-URI \
    ... other flags ...

REST API

カスタム イメージを使用してクラスタを作成するには、cluster.create API リクエストに含まれる masterConfigworkerConfig、および該当する場合は secondaryWorkerConfig の各オブジェクトで、InstanceGroupConfig.imageUri フィールドにカスタム イメージの URI を指定します。

例: カスタム イメージで標準の Cloud Dataproc クラスタ(1 つのマスターノード、2 つのワーカーノード)を作成するための REST リクエスト。

POST /v1/projects/project-id/regions/global/clusters/
{
  "clusterName": "custom-name",
  "config": {
    "masterConfig": {
      "imageUri": "projects/project-id/global/images/custom-image-name"
    },
    "workerConfig": {
      "imageUri": "projects/project-id/global/images/custom-image-name"
    }
  }
}
  

Console

GCP Console の Cloud Dataproc(クラスタの作成)(https://console.cloud.google.com/dataproc/clustersAdd)ページから、カスタム イメージを使用するクラスタを作成できます。
  1. フォームの下部にある [詳細オプション] 展開ボタンを開きます。
  2. [イメージ] セクションで、[変更] をクリックします。
  3. [カスタム イメージ] タブを選択し、Cloud Dataproc クラスタに使用するカスタム イメージを選択して、[選択] をクリックします。
[クラスタを作成] フォームを送信すると、選択したカスタム イメージとともに、クラスタの VM がプロビジョニングされます。

期限切れのカスタム イメージを使用してクラスタを作成する方法

デフォルトで、カスタム イメージはイメージの作成日から 60 日後に期限切れになります。次の手順に従って、期限切れのカスタム イメージを使用するクラスタを作成できます。

  1. 期限切れのカスタム イメージ、または 10 日以内に期限切れになるカスタム イメージを使用して、Cloud Dataproc クラスタの作成を試みます。

    gcloud dataproc clusters create cluster-name \
        --image=custom-image-name \
        ... other flags ...
    

  2. gcloud ツールによって、クラスタ dataproc:dataproc.custom.image.expiration.token のプロパティ名とトークン値が含まれたエラー メッセージが発行されます。

    dataproc:dataproc.custom.image.expiration.token=token value
    
    「トークン値」の文字列をクリップボードにコピーします。

  3. gcloud ツールを使用して、上記でコピーした「トークン値」をクラスタのプロパティとして追加し、Cloud Dataproc クラスタをもう一度作成します。

    gcloud dataproc clusters create cluster-name \
        --image=custom-image-name \
        --properties dataproc:dataproc.custom.image.expiration.token=token value \
        ... other flags ...
    

これで、このカスタム イメージを使用してクラスタを作成できます。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Dataproc ドキュメント
ご不明な点がありましたら、Google のサポートページをご覧ください。