Cloud Storage 連接器開放原始碼 Java 程式庫可直接對 Cloud Storage 所儲存的資料執行 Apache Hadoop 或 Apache Spark 工作。
Cloud Storage 連接器的優點
- 直接存取資料:可將資料儲存在 Cloud Storage 並直接存取,不必先將資料轉移至 HDFS。
- HDFS 相容性:可以使用
gs://前置字元 (而非hdfs://) 存取 Cloud Storage 中的資料。 - 互通性 – 資料儲存於 Cloud Storage,即可在 Spark、Hadoop 和 Google 服務之間順暢互通。
- 資料方便存取:關閉 Hadoop 叢集後,仍可存取 Cloud Storage 中的資料,不像 HDFS 會無法存取。
- 高資料可用性 – 儲存在 Cloud Storage 中的資料可用性高且能在全球複製,不會降低效能。
- 沒有儲存管理負擔 – 不同於 HDFS,Cloud Storage 不需要日常維護,例如檢查檔案系統、升級或復原到之前的檔案系統版本。
- 快速啟動 – 在 HDFS 中,MapReduce 工作必須在
NameNode離開安全模式之後才可啟動;這個過程可能需要幾秒鐘到好幾分鐘的時間,視資料大小和狀態而定。使用 Cloud Storage,就可以在工作節點啟動時立即啟動工作,長久下來可節省大量成本。
在 Dataproc 叢集上設定連接器
根據預設,Cloud Storage 連接器會安裝在所有 Dataproc 叢集節點的 /usr/local/share/google/dataproc/lib/ 目錄下。以下子節說明在 Dataproc 叢集上完成連接器設定的步驟。
VM 服務帳戶
在 Dataproc 叢集節點和其他 Compute Engine VM 上執行連接器時,google.cloud.auth.service.account.enable 屬性根據預設會設定為 false,這表示不需要為連接器設定 VM 服務帳戶憑證,因為該憑證會由 VM 中繼資料伺服器提供。
Dataproc VM 服務帳戶必須具備 Cloud Storage bucket 的存取權限。
使用者選取的連接器版本
Dataproc 叢集所安裝最新映像檔預設使用的 Cloud Storage 連接器版本,會列在映像檔版本頁面中。如果應用程式依附於叢集所部署的非預設連接器版本,請執行下列其中一項動作,以使用所選的連接器版本:
- 使用
--metadata=GCS_CONNECTOR_VERSION=x.y.z旗標建立叢集,藉此將叢集上執行的應用程式所用的連接器更新為指定版本。 - 將所用版本適用的連接器類別和連接器依附元件納入應用程式的 JAR 中,並加以重新定位。為避免所部署的連接器版本與 Dataproc 叢集所安裝的預設連接器版本發生衝突,請務必重新定位。另請參閱 Maven 依附元件重新定位範例。
在非 Dataproc 叢集上設定連接器
如要在非 Dataproc 叢集 (例如用於將地端部署 HDFS 資料遷移到 Cloud Storage 的 Apache Hadoop 或 Spark 叢集) 上設定 Cloud Storage 連接器,請按照下列步驟操作。
下載連接器
- 下載 Cloud Storage 連接器的方法選項如下:
- 使用 Cloud Storage bucket 中的
latest版本 (正式版應用程式不建議使用latest版本): - 使用 Cloud Storage bucket 中的特定版本,方法是在
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jar命名模式中替換 Hadoop 和 Cloud Storage 連接器版本,例如gs://hadoop-lib/gcs/gcs-connector-hadoop2-2.1.1.jar。 - 使用 Apache Maven 存放區中的特定版本,方法是下載名稱含有
-shaded後置字元的重定位 JAR。
- 使用 Cloud Storage bucket 中的
- 下載 Cloud Storage 連接器的方法選項如下:
安裝連接器。
請按照 GitHub 操作說明安裝、設定及測試 Cloud Storage 連接器。
連接器使用方式
連接器可用於存取 Cloud Storage 資料,方式如下:
- 在 Spark、PySpark 或 Hadoop 應用程式中使用
gs://前置字串 - 在 Hadoop 殼層中使用
hadoop fs -ls gs://bucket/dir/file - 在 Google Cloud 控制台的 Cloud Storage 瀏覽器中
- 使用 Google Cloud SDK 指令,例如:
Java 使用方式
Cloud Storage 連接器需要 Java 8。
以下是 Cloud Storage 連接器的 Maven POM 依附元件管理區段範例。詳情請參閱「依附元件管理」。
<dependency>
<groupId>com.google.cloud.bigdataoss</groupId>
<artifactId>gcs-connector</artifactId>
<version>hadoopX-X.X.XCONNECTOR VERSION</version>
<scope>provided</scope>
</dependency>
經過重定位處理的版本:
<dependency>
<groupId>com.google.cloud.bigdataoss</groupId>
<artifactId>gcs-connector</artifactId>
<version>hadoopX-X.X.XCONNECTOR VERSION</version>
<scope>provided</scope>
<classifier>shaded</classifier>
</dependency>
連接器支援
Google Cloud 支援 Cloud Storage 連接器搭配用於Google Cloud 產品與用途。搭配 Dataproc 使用時,可獲得與 Dataproc 同等級的支援。詳情請參閱「取得支援」。
使用 gRPC 連線至 Cloud Storage
根據預設,Dataproc 上的 Cloud Storage 連接器會使用 Cloud Storage JSON API。本節說明如何啟用 Cloud Storage 連接器,以使用 gRPC。
使用注意事項
Cloud Storage 連接器搭配 gRPC 使用時,請注意下列事項:
- 區域 bucket 位置:Compute Engine VM 和 Cloud Storage bucket 必須位於相同的 Compute Engine 區域,gRPC 才能縮短讀取延遲時間。
- 讀取密集型工作:gRPC 可改善長時間讀取作業的延遲,有助於處理大量讀取內容的工作負載。若應用程式會建立 gRPC 管道,並於執行短暫運算後即關閉管道,則不建議搭配使用。
- 未經驗證的要求:gRPC 不支援未經驗證的要求。
需求條件
gRPC 搭配 Cloud Storage 連接器使用時,必須符合下列需求:
Dataproc 叢集的 虛擬私有雲網路必須支援直接連線,亦即網路路由和防火牆規則必須允許輸出流量連到
34.126.0.0/18和2001:4860:8040::/42。- 如果 Dataproc 叢集使用 IPv6 網路,則必須為 VM 執行個體設定 IPv6 子網路。詳情請參閱「為執行個體與執行個體範本設定 IPv6」。
建立 Dataproc 叢集時,必須使用 Cloud Storage 連接器
2.2.23以上版本搭配映像檔2.1.56+,或是 Cloud Storage 連接器 3.0.0 以上搭配映像檔 2.2.0 以上版本。有關各個 Dataproc 映像檔版本所安裝的 Cloud Storage 連接器版本,詳見 Dataproc 映像檔版本頁面。- 如要建立並使用 Dataproc on GKE 虛擬叢集來處理 gRPC Cloud Storage 要求,建議使用 GKE 版本
1.28.5-gke.1199000,並搭配gke-metadata-server 0.4.285,因為這個組合支援直接連線。
- 如要建立並使用 Dataproc on GKE 虛擬叢集來處理 gRPC Cloud Storage 要求,建議使用 GKE 版本
您或貴組織管理員必須授予 Identity and Access Management 角色,其中包含設定 Cloud Storage 連接器及對其發出 gRPC 要求所需的權限。這些角色包括:
- 使用者角色:授予使用者 Dataproc 編輯者角色,允許使用者建立叢集和提交工作
- 服務帳戶角色:授予 Dataproc VM 服務帳戶的 Storage 物件使用者角色,允許在叢集 VM 上執行的應用程式檢視、讀取、建立和寫入 Cloud Storage 物件。
在 Cloud Storage 連接器上啟用 gRPC
不論是整個叢集或個別工作,都可以啟用 Cloud Storage 連接器的 gRPC 功能。在叢集上啟用後,Cloud Storage 連接器的讀取要求會使用 gRPC 協定。如果為個別工作 (而非整個叢集) 啟用此功能,Cloud Storage 連接器的讀取要求只會針對該項工作使用 gRPC。
啟用叢集
若要為整個叢集啟用 Cloud Storage 連接器的 gRPC,請在建立 Dataproc 叢集時設定 core:fs.gs.client.type=STORAGE_CLIENT 屬性。為叢集啟用 gRPC 後,在叢集上執行的工作所發出的 Cloud Storage 連接器讀取要求,都會使用 gRPC。
gcloud CLI 範例:
gcloud dataproc clusters create CLUSTER_NAME \
--project=PROJECT_ID \
--region=REGION \
--properties=core:fs.gs.client.type=STORAGE_CLIENT
更改下列內容:
- CLUSTER_NAME:指定叢集的名稱。
- PROJECT_NAME:叢集所在專案的專案 ID。 專案 ID 列在 Google Cloud 控制台資訊主頁的「Project info」(專案資訊) 區段。
- REGION:指定叢集所在的 Compute Engine 區域。
啟用工作
如要為特定工作啟用 Cloud Storage 連接器的 gRPC,請在提交工作時加入 --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT。
範例:在現有叢集上執行工作,使用 gRPC 讀取 Cloud Storage 中的資料。
在本機建立
/tmp/line-count.pyPySpark 指令碼,使用 gRPC 讀取 Cloud Storage 文字檔案,並輸出檔案中的行數。cat <<EOF >"/tmp/line-count.py" #!/usr/bin/python import sys from pyspark.sql import SparkSession path = sys.argv[1] spark = SparkSession.builder.getOrCreate() rdd = spark.read.text(path) lines_counter = rdd.count() print("There are {} lines in file: {}".format(lines_counter,path)) EOF在本機建立
/tmp/line-count-sample.txt文字檔案。cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
將本機上的
/tmp/line-count.py和/tmp/line-count-sample.txt上傳至 Cloud Storage 中的 bucket。gcloud storage cp /tmp/line-count* gs://BUCKET
在叢集上執行
line-count.py工作。設定--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT以啟用 gRPC,來處理 Cloud Storage 連接器的讀取要求。gcloud dataproc jobs submit pyspark gs://BUCKET/line-count.py \ --cluster=CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT \ -- gs://BUCKET/line-count-sample.txt
更改下列內容:
- CLUSTER_NAME:現有叢集的名稱。
- PROJECT_NAME:專案 ID專案 ID 列在 Google Cloud 控制台資訊主頁的「Project info」(專案資訊) 區段。
- REGION:叢集所在的 Compute Engine 區域。
- BUCKET:Cloud Storage bucket。
產生 gRPC 用戶端指標
Cloud Storage 連接器可設定在 Cloud Monitoring 中產生 gRPC 相關指標。gRPC 相關指標可提供以下助益:
- 監控並最佳化向 Cloud Storage 發送 gRPC 要求時的傳輸效能
- 輔助疑難排解和偵錯,及時解決問題
- 洞察應用程式的使用情況和行為
如要瞭解如何設定 Cloud Storage 連接器以產生 gRPC 相關指標,請參閱「使用 gRPC 用戶端指標」。
資源
- 請參閱 GitHub Cloud Storage 連接器設定屬性。
- 請參閱「使用 gRPC 連線至 Cloud Storage」,瞭解如何搭配用戶端程式庫、VPC Service Controls 以及在其他情境中使用 Cloud Storage 連接器。
- 進一步瞭解 Cloud Storage。
- 請參閱 搭配 Apache Spark 使用 Cloud Storage 連接器
- 瞭解 Apache Hadoop 檔案系統。
- 查看 Javadoc 參考資料。