實際工作環境的 Dataproc 最佳做法

本文將說明 Dataproc 最佳做法,協助您在實際工作環境中,透過 Dataproc 叢集執行可靠、高效且具洞察力的資料處理工作。

指定叢集映像檔版本

Dataproc 會使用映像檔版本,將作業系統、大數據元件和 Google Cloud 連接器整合成一個可於叢集部署的套件。如果您在建立叢集時未指定映像檔版本,Dataproc 會預設為使用最新的穩定映像檔版本。

如為實際工作環境,請將叢集與特定 major.minor Dataproc 映像檔版本建立關聯,如以下 gcloud CLI 指令所示。

gcloud dataproc clusters create CLUSTER_NAME \
    --region=region \
    --image-version=2.0

Dataproc 會將 major.minor 版本解析為最新的次次要版本 (2.0 會解析為 2.0.x)。注意:如果您需要為叢集使用特定的次次要版本,可以指定該版本,例如 --image-version=2.0.x。詳情請參閱「版本管理的運作方式」。

Dataproc 預覽映像檔版本

新版 Dataproc 映像檔的次要版本會先在 preview 版本中發布,之後才會在標準次要映像檔版本管道中發布。在實際工作環境中採用標準次要映像檔版本前,請使用預覽映像檔,針對新次要映像檔版本測試及驗證工作。詳情請參閱Dataproc 版本管理

視需要使用自訂圖片

如果您有要新增至叢集的依附元件 (例如原生 Python 程式庫、安全強化或防毒軟體),請從目標次要映像檔版本追蹤中的最新映像檔建立自訂映像檔。這項做法可讓您在使用自訂映像檔建立叢集時,滿足依附元件需求。重新建構自訂映像檔以更新依附元件需求時,請使用次要圖像追蹤中最新的次次要圖像版本。

將工作提交至 Dataproc 服務

使用 gcloud CLI 或 Google Cloud 主控台,透過 jobs.submit 呼叫將工作提交至 Dataproc 服務。授予 Dataproc 角色,設定工作和叢集權限。使用自訂角色,將叢集存取權與工作提交權限分開。

將工作提交至 Dataproc 服務的好處:

  • 不需要複雜的網路設定,API 可廣泛存取
  • 輕鬆管理身分與存取權管理權限和角色
  • 輕鬆追蹤工作狀態 - 沒有 Dataproc 工作中繼資料,不會讓結果變得複雜。

在實際工作環境中,請執行只依附叢集層級依附元件的作業,且使用固定的次要映像檔版本 (例如 --image-version=2.0)。在提交工作時,請將依附元件與工作捆綁在一起。常見的做法是將 uber jar 提交至 Spark 或 MapReduce。

  • 範例:如果工作 JAR 檔案依賴 args4jspark-sql,其中 args4j 專屬於工作,而 spark-sql 是叢集層級相依性,請在工作的超級 JAR 檔案中封裝 args4j

控制初始化動作位置

初始化動作可讓您在建立 Dataproc 叢集時自動執行指令碼或安裝元件 (如要瞭解常見的 Dataproc 初始化動作,請參閱 dataproc-initialization-actions GitHub 存放區)。在實際環境中使用叢集初始化動作時,請將初始化指令碼複製到 Cloud Storage,而非從公開存放區取得。這麼做可避免執行初始化指令碼,因為這類指令碼可能會遭到他人修改。

監控 Dataproc 版本資訊

Dataproc 會定期發布新的次次要映像檔版本。如要瞭解最新的 Dataproc 映像檔版本發布資訊,以及其他公告、異動和修正,請查看或訂閱 Dataproc 版本資訊

查看暫存區以調查失敗

  1. 查看叢集的測試值區,瞭解叢集和工作錯誤訊息。通常,錯誤訊息會顯示前置值區 Cloud Storage 位置,如以下錯誤訊息範例中的粗體文字所示:

    ERROR:
    (gcloud.dataproc.clusters.create) Operation ... failed:
    ...
    - Initialization action failed. Failed action ... see output in: 
    gs://dataproc-<BUCKETID>-us-central1/google-cloud-dataproc-metainfo/CLUSTERID/<CLUSTER_ID>\dataproc-initialization-script-0_output
     

  2. 使用 gcloud CLI 查看暫存值區內容:

    gcloud storage cat gs://STAGING_BUCKET
    
    輸出內容範例:
    + readonly RANGER_VERSION=1.2.0
    ... Ranger admin password not set. Please use metadata flag - default-password
    

取得支援

Google Cloud 支援實際的 OSS 工作負載,並透過支援層級協助您達成業務服務水準協議。此外, Google Cloud 顧問服務還可針對團隊的正式部署作業提供最佳做法指南。

瞭解詳情