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 中繼資料伺服器會提供 VM 服務帳戶憑證。
Dataproc VM 服務帳戶必須具備存取 Cloud Storage 值區的權限。
使用者選取的連接器版本
安裝在 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 值區中的特定版本,請在
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
- 在 Cloud Storage「Browser」(瀏覽器)中 在 Google Cloud 控制台中
- 使用 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。
使用注意事項
搭配 gRPC 使用 Cloud Storage 連接器時,請注意下列事項:
- 地區值區位置:只有在 Compute Engine VM 和 Cloud Storage 值區位於相同的 Compute Engine 地區時,gRPC 才能縮短讀取延遲時間。
- 大量讀取內容的作業:gRPC 可縮短長時間讀取作業的延遲時間,並協助處理大量讀取內容的工作負載。不建議應用程式建立 gRPC 管道、執行短時間的運算,然後關閉管道。
- 未經驗證的要求:gRPC 不支援未經驗證的要求。
需求條件
使用 gRPC 和 Cloud Storage 連接器時,必須符合下列需求:
Dataproc 叢集的 VPC 網路必須支援直接連線。也就是說,網路的路由和防火牆規則必須允許輸出流量連上
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-metadata-server 0.4.285
的 GKE 版本1.28.5-gke.1199000
。這個組合支援直接連線。
- 如果您建立及使用 Dataproc on GKE 虛擬叢集處理 gRPC Cloud Storage 要求,建議使用
您或貴機構的管理員必須授予 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 控制台資訊主頁的「專案資訊」部分。
- REGION:指定叢集所在的 Compute Engine 區域。
啟用工作
如要為特定工作啟用 Cloud Storage 連接器的 gRPC,請在提交工作時加入 --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
。
範例:在現有叢集上執行工作,使用 gRPC 從 Cloud Storage 讀取資料。
建立本機
/tmp/line-count.py
PySpark 指令碼,使用 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
設為啟用 Cloud Storage 連接器讀取要求的 gRPC。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 控制台資訊主頁的「專案資訊」部分。
- REGION:叢集所在的 Compute Engine 區域。
- BUCKET:Cloud Storage 值區。
產生 gRPC 用戶端指標
您可以設定 Cloud Storage 連接器,在 Cloud Monitoring 中產生 gRPC 相關指標。gRPC 相關指標可協助您執行下列操作:
- 監控及最佳化傳送至 Cloud Storage 的 gRPC 要求效能
- 排解及偵錯問題
- 深入瞭解應用程式使用情況和行為
如要瞭解如何設定 Cloud Storage 連接器來產生 gRPC 相關指標,請參閱「使用 gRPC 用戶端指標」。
資源
- 請參閱 GitHub Cloud Storage 連接器設定屬性。
- 如要搭配使用 Cloud Storage 連接器與用戶端程式庫、VPC Service Controls 和其他情境,請參閱「使用 gRPC 連線至 Cloud Storage」。
- 進一步瞭解 Cloud Storage。
- 請參閱「搭配 Apache Spark 使用 Cloud Storage 連接器」。
- 瞭解 Apache Hadoop 檔案系統 。
- 查看 Javadoc 參考資料。