附加 Dataproc 叢集或自行管理的叢集

建立 Dataproc Metastore 服務後,您可以附加下列任一服務:

連線至其中一項服務後,系統會在查詢執行期間,使用您的 Dataproc Metastore 服務做為 Hive 中繼存放區。

事前準備

必要的角色

如要取得建立 Dataproc Metastore 和 Dataproc 叢集所需的權限,請要求管理員授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義的角色具備建立 Dataproc Metastore 和 Dataproc 叢集所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要建立 Dataproc Metastore 和 Dataproc 叢集,必須具備下列權限:

  • 如要建立 Dataproc Metastore,請在使用者帳戶或服務帳戶上執行下列操作: metastore.services.create
  • 如要建立 Dataproc 叢集: dataproc.clusters.create 在使用者帳戶或服務帳戶上
  • 如要存取 Hive 倉庫目錄: orgpolicy.policy.get1,resourcemanager.projects.get,resourcemanager.projects.list,storage.objects.*,storage.multipartUploads.*Dataproc VM 服務帳戶

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

如要進一步瞭解 Dataproc Metastore 的特定角色和權限,請參閱「使用身分與存取權管理功能控管存取權」一文。

Dataproc 叢集

Dataproc 是一項代管的 Apache Spark 和 Apache Hadoop 服務,能夠讓您妥善運用開放原始碼資料工具,進行批次處理、查詢、串流及機器學習作業。

注意事項

建立及附加 Dataproc 叢集前,請先檢查 Dataproc Metastore 服務使用的端點通訊協定。這個通訊協定定義 Hive Metastore 用戶端存取 Dataproc Metastore 中繼資料的方式。這項選擇也會影響您可與服務整合及使用的功能。

Apache Thrift

如果您使用 Apache Thrift 端點通訊協定,請考量下列網路需求:

  • 根據預設,您應在同一個網路上建立 Dataproc 叢集和 Dataproc Metastore 服務。Dataproc 叢集也可以使用 Dataproc Metastore 服務網路的子網路。

  • 如果 Dataproc 叢集與網路屬於不同專案,您必須設定共用網路權限

  • 如果 Dataproc 叢集與 Dataproc Metastore 服務屬於不同專案,您必須先設定額外權限,才能建立 Dataproc 叢集。

gRPC

如果您使用 gRPC 端點通訊協定,請考量下列網路需求:

  • 使用 gRPC 端點通訊協定建立 Dataproc Metastore 後,您必須授予其他 IAM 角色

  • 如果您使用 Dataproc 個人叢集驗證,Dataproc Metastore 必須使用 gRPC 端點通訊協定。

  • 如果 Dataproc 叢集與 Dataproc Metastore 服務屬於不同專案,您必須先設定額外權限,才能建立 Dataproc 叢集。

建立叢集並連結 Dataproc Metastore

下列操作說明會介紹如何建立 Dataproc 叢集,並從 Dataproc Metastore 服務連線至該叢集。這些操作說明假設您已建立 Dataproc Metastore 服務

  • 建立 Dataproc 叢集前,請確認所選的 Dataproc 映像檔與您建立 Dataproc Metastore 時選取的 Hive Metastore 版本相容。詳情請參閱 Dataproc 映像檔版本清單
  • 為提升網路連線品質,請在與 Dataproc Metastore 服務相同的區域中建立 Dataproc 叢集。

控制台

  1. 在 Google Cloud 控制台中,開啟 Dataproc 的「建立叢集」頁面:

    開啟「建立叢集」

  2. 在「叢集名稱」欄位中,輸入叢集的名稱。

  3. 在「Region」(區域) 和「Zone」(可用區) 選單中,選取建立 Dataproc Metastore 服務所在的區域。你可以選擇任何區域。

  4. 按一下「Customize cluster」(自訂叢集) 分頁標籤。

  5. 在「網路設定」部分,選取您建立 Dataproc Metastore 服務時使用的網路。

  6. 在「Dataproc Metastore」部分,選取要附加的 Dataproc Metastore 服務。如果尚未建立服務,可以選取「建立新服務」

  7. 選用:如果 Dataproc Metastore 服務使用 gRPC 端點通訊協定:

    1. 按一下「管理安全性」分頁標籤。
    2. 在「專案存取權」部分,選取「為這個叢集啟用 cloud-platform 範圍」
  8. 視需要設定其餘服務選項。

  9. 如要建立叢集,請按一下「建立」

    新叢集會出現在「叢集」清單中。在叢集準備好可以使用之前,叢集狀態會列示為「Provisioning」(佈建中)。準備就緒後,狀態會變更為「執行中」

gcloud CLI

如要建立叢集並連結 Dataproc Metastore,請執行下列 gcloud dataproc clusters create 指令:

gcloud dataproc clusters create CLUSTER_NAME \
    --dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \
    --region=LOCATION \
    --scopes=SCOPES

更改下列內容:

  • CLUSTER_NAME:新 Dataproc 叢集的名稱。
  • PROJECT_ID:您在其中建立 Dataproc Metastore 服務的專案 ID。
  • LOCATION:與您建立 Dataproc Metastore 服務時所在的區域相同。
  • SERVICE:要附加至叢集的 Dataproc Metastore 服務名稱。
  • SCOPES:(選用) 如果 Dataproc Metastore 服務使用 gRPC 端點通訊協定,請使用 cloud-platform

REST

按照 API 操作說明,使用 API Explorer 建立叢集

使用 Dataproc 叢集屬性附加叢集

您也可以使用 Dataproc 屬性,將 Dataproc 叢集附加至 Dataproc Metastore。這些屬性包括 Dataproc Metastore ENDPOINT_URIWAREHOUSE_DIR

如果 Dataproc Metastore 服務使用 Private Service Connect,或是您想將 Dataproc 叢集連結至 Dataproc Metastore 服務的輔助版本,請按照這些操作說明進行。

您可以使用 ENDPOINT_URIWAREHOUSE_DIR 屬性,透過兩種方式附加 Dataproc 叢集:

選項 1:建立 Dataproc 叢集時

建立 Dataproc 叢集時,請使用屬性標記搭配下列 Hive 設定。

gcloud dataproc clusters create CLUSTER_NAME \
     --properties="hive:hive.metastore.uris=ENDPOINT_URI,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR/hive-warehouse"

更改下列內容:

  • CLUSTER_NAME:新 Dataproc 叢集的名稱。
  • ENDPOINT_URI:Dataproc Metastore 服務的端點 URI
  • WAREHOUSE_DIRHive 倉庫目錄的位置。

方法 2:更新 hive-site.xml 檔案

您也可以直接修改叢集的 hive-site.xml 檔案,附加 Dataproc 叢集。

  1. .*-m 使用 SSH 連線至叢集。
  2. 開啟 /etc/hive/conf/hive-site.xml 檔案,然後修改下列幾行:

    <property>
       <name>hive.metastore.uris</name>
       <!-- Update this value. -->
       <value>ENDPOINT_URI</value>
    </property>
    <!-- Add this property entry. -->
    <property>
       <name>hive.metastore.warehouse.dir</name>
       <value>WAREHOUSE_DIR</value>
    </property>
    

    更改下列內容:

  3. 重新啟動 HiveServer2:

    sudo systemctl restart hive-server2.service
    

自行管理的叢集

自行管理的叢集可以是 Apache Hive 執行個體、Apache Spark 執行個體或 Presto 叢集。

附加自行管理的叢集

在用戶端設定檔中設定下列值:

hive.metastore.uris=ENDPOINT_URI
hive.metastore.warehouse.dir=WAREHOUSE_DIR

更改下列內容:

後續步驟