Dataproc のステージング バケットと一時バケット

クラスタを作成すると、デフォルトのファイルシステムとして HDFS が使用されます。この動作は、defaultFS を Cloud Storage バケットとして設定することでオーバーライドできます。また、デフォルトでは Dataproc が Cloud Storage のステージング バケットと Cloud Storage の一時バケットをプロジェクトに作成するか、Dataproc によって作成された既存のステージング バケットと一時バケットを以前のクラスタ作成リクエストから再利用します。

  • ステージング バケット: クラスタジョブの依存関係、ジョブドライバ出力、クラスタ構成ファイルのステージングに使用されます。また、gcloud CLI の gcloud dataproc clusters diagnose コマンドの出力を受け取ります。

  • 一時バケット: Spark や MapReduce の履歴ファイルなど、一時的なクラスタとジョブデータを格納するために使用されます。

クラスタの作成時にステージング バケットまたは一時バケットを指定しない場合、クラスタがデプロイされている Compute Engine ゾーンに応じて Dataproc はクラスタのステージング バケットと一時バケット用に Cloud Storage のロケーション(US、ASIA、EU)を設定し、これらのプロジェクト レベルのロケーションごとのバケットが作成、管理されます。Dataproc で作成されたステージング バケットと一時バケットは、同じリージョン内のクラスタ間で共有され、Cloud Storage の削除(復元可能)の保持期間が 0 秒に設定された状態で作成されます。

一時バケットにはエフェメラル データが含まれ、TTL は 90 日間です。複数のクラスタで必要になるステージング バケット(構成データと依存関係ファイルを格納可能)には、TTL が設定されていません。ただし、依存関係ファイル(ステージング バケット フォルダにある「.jar」ファイル名拡張子を持つファイル)にライフサイクル ルールを適用すると、依存関係ファイルがクラスタに不要になったときファイルの削除をスケジュールできます。

独自のステージング バケットと一時バケットを作成する

デフォルトのステージング バケットと一時バケットを作成する代わりに、Dataproc がクラスタのステージング バケットと一時バケットとして使用する既存の Cloud Storage バケットを指定できます。

gcloud コマンド

--bucket フラグまたは --temp-bucket フラグを使用して、gcloud dataproc clusters create コマンドをターミナル ウィンドウでローカルに実行するか、Cloud Shell で実行して、クラスタのステージング バケットや一時バケットを指定します。

gcloud dataproc clusters create cluster-name \
    --region=region \
    --bucket=bucket-name \
    --temp-bucket=bucket-name \
    other args ...

REST API

clusters.create リクエストで ClusterConfig.configBucket フィールドと ClusterConfig.tempBucket フィールドを使用して、クラスタのステージング バケットと一時バケットを指定します。

Console

Google Cloud コンソールで、Dataproc の [クラスタの作成] ページを開きます。[クラスタをカスタマイズする] パネルを選択してから、[ファイル ストレージ] フィールドを使用して、クラスタのステージング バケットを指定するか選択します。

注: 現在のところ、Google Cloud コンソールを使用した一時バケットの指定はサポートされていません。

Dataproc は、クラスタに接続された Cloud Storage バケット用の定義済みフォルダ構造を使用します。また、1 つの Cloud Storage バケットに複数のクラスタを接続できます。Cloud Storage にジョブドライバ出力を保存する場合に使用されるフォルダ構造は次のとおりです。

cloud-storage-bucket-name
  - google-cloud-dataproc-metainfo
    - list of cluster IDs
        - list of job IDs
          - list of output logs for a job

gcloud コマンドライン ツール、Dataproc API、または Google Cloud コンソールを使用して、クラスタのステージング バケットと一時バケットの名前を一覧表示できます。

Console

  • Google Cloud コンソールで、Dataproc の [クラスタ] ページにクラスタの詳細(クラスタのステージング バケットの名前を含む)を表示します。
  • Google Cloud コンソールの Cloud Storage ブラウザ ページで、「dataproc-temp-」を含む結果をフィルタリングします。

gcloud コマンド

gcloud dataproc clusters describe コマンドをターミナル ウィンドウでローカルに、または Cloud Shell で実行します。クラスタに関連付けられたステージング バケットと一時バケットが出力に表示されます。

gcloud dataproc clusters describe cluster-name \
    --region=region \
...
clusterName: cluster-name
clusterUuid: daa40b3f-5ff5-4e89-9bf1-bcbfec ...
config:
    configBucket: dataproc-...
    ...
    tempBucket: dataproc-temp...

REST API

clusters.get を呼び出して、クラスタのステージング バケットと一時バケットの名前を含むクラスタの詳細を一覧表示します。

{
 "projectId": "vigilant-sunup-163401",
 "clusterName": "cluster-name",
 "config": {
  "configBucket": "dataproc-...",
...
  "tempBucket": "dataproc-temp-...",
}

defaultFS

core:fs.defaultFS を Cloud Storage のバケットのロケーション(gs://defaultFS-bucket-name)に設定して、Cloud Storage をデフォルトのファイル システムとして設定できます。これにより、core:fs.gs.reported.permissions が設定されます。これは、すべてのファイルに対して Cloud Storage コネクタから返されるレポートの権限で、777 に設定されます。

Cloud Storage がデフォルトのファイル システムとして設定されていない場合、HDFS が使用され、core:fs.gs.reported.permissions プロパティがデフォルト値の 700 を返します。

gcloud dataproc clusters create cluster-name \
    --properties=core:fs.defaultFS=gs://defaultFS-bucket-name \
    --region=region \
    --bucket=staging-bucket-name \
    --temp-bucket=temp-bucket-name \
    other args ...