Dataproc 暫存與臨時 bucket

建立叢集時,系統預設會使用 HDFS 做為檔案系統。如要覆寫這個行為,請將 defaultFS 設為 Cloud Storage bucket。根據預設,Dataproc 也會在專案中建立 Cloud Storage 暫存 bucket 和臨時 bucket,或重複使用先前叢集建立要求中 Dataproc 建立的暫存 bucket 和臨時 bucket。

如果您在建立叢集時未指定暫存或臨時 bucket,Dataproc 會根據部署叢集的 Compute Engine 區域,為叢集的暫存和臨時 bucket 在美國、亞洲或歐盟設定 Cloud Storage 位置,然後建立及管理這些專案層級的每個位置 bucket。Dataproc 建立的暫存和臨時 bucket 會由同一區域中的叢集共用,且建立時 Cloud Storage 虛刪除保留時間會設為 0 秒。如果您指定自己的暫存和臨時 bucket,建議您調整虛刪除保留時間,以減少虛刪除物件產生的儲存空間費用。

臨時 bucket 包含暫時性資料,存留時間為 90 天。 暫存 bucket 可包含多個叢集所需的設定資料和依附元件檔案,因此沒有存留時間。不過,您可以為依附元件檔案套用生命週期規則 (位於暫存 bucket 資料夾中,副檔名為「.jar」的檔案),在叢集不再需要依附元件檔案時,排定移除這些檔案。

建立暫存與臨時 bucket

您可以指定現有的 Cloud Storage bucket,供 Dataproc 做為叢集的暫存與臨時 bucket,不用依賴系統建立預設暫存 bucket。

gcloud 指令

在本機終端機視窗或 Cloud Shell 中,使用 --bucket 和/或 --temp-bucket 旗標執行 gcloud dataproc clusters create 指令,指定叢集的暫存和/或臨時 bucket。

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

REST API

clusters.create 要求中使用 ClusterConfig.configBucketClusterConfig.tempBucket 欄位,指定叢集的暫存和臨時 bucket。

控制台

在 Google Cloud 控制台中,開啟 Dataproc 的「Create a cluster」(建立叢集) 頁面。選取「Customize cluster」(自訂叢集) 面板,然後使用「File storage」(檔案儲存空間) 欄位指定或選取叢集的暫存 bucket。

注意:目前系統不支援使用 Google Cloud 控制台指定暫時 bucket。

Dataproc 會在連結叢集的 Cloud Storage bucket 中,使用已定義的資料夾結構。Dataproc 也支援將一個以上的叢集連結至一個 Cloud Storage bucket。在 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 控制台,列出叢集的暫存和臨時 bucket 名稱。

控制台

  • 在 Google Cloud 控制台的 Dataproc「Clusters」(叢集) 頁面中,查看叢集詳細資料,包括叢集暫存 bucket 的名稱。
  • 在 Google Cloud 控制台的「Cloud Storage Browser」(Cloud Storage 瀏覽器) 頁面,篩選含有「dataproc-temp-」的結果。

gcloud 指令

在本機終端機視窗或 Cloud Shell 中執行 gcloud dataproc clusters describe 指令。與叢集相關的暫存和臨時 bucket 會列在輸出內容中。

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 列出叢集詳細資料,包括叢集暫存和臨時 bucket 的名稱。

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

defaultFS

您可以將 core:fs.defaultFS 設為 Cloud Storage 中的 bucket 位置 (gs://defaultFS-bucket-name),將 Cloud Storage 設為預設檔案系統。這也會將所有檔案的 Cloud Storage 連接器回報權限 core:fs.gs.reported.permissions 設為 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 ...