建立 Dataproc Metastore 服務後,您可以附加下列任一服務:
- Dataproc 叢集。
- 自行管理的 Apache Hive 執行個體、Apache Spark 執行個體或 Presto 叢集。
連線至其中一項服務後,系統會在查詢執行期間,使用您的 Dataproc Metastore 服務做為 Hive 中繼存放區。
事前準備
必要的角色
如要取得建立 Dataproc Metastore 和 Dataproc 叢集所需的權限,請要求管理員授予下列 IAM 角色:
-
如要授予 Dataproc Metastore 資源的完整控制權,請採取下列任一做法:
-
Dataproc Metastore 編輯者 (
roles/metastore.editor
) 使用者帳戶或服務帳戶 -
使用者帳戶或服務帳戶的Dataproc Metastore 管理員 (
roles/metastore.admin
)
-
Dataproc Metastore 編輯者 (
-
如要建立 Dataproc 叢集:
(
roles/dataproc.worker
) 在 Dataproc VM 服務帳戶 -
如要授予 Hive 倉庫目錄的讀取和寫入權限,請在 Dataproc VM 服務帳戶上執行下列步驟:
(
roles/storage.objectAdmin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色具備建立 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 叢集
Dataproc 是一項代管的 Apache Spark 和 Apache Hadoop 服務,能夠讓您妥善運用開放原始碼資料工具,進行批次處理、查詢、串流及機器學習作業。
注意事項
建立及附加 Dataproc 叢集前,請先檢查 Dataproc Metastore 服務使用的端點通訊協定。這個通訊協定定義 Hive Metastore 用戶端存取 Dataproc Metastore 中繼資料的方式。這項選擇也會影響您可與服務整合及使用的功能。
Apache Thrift
如果您使用 Apache Thrift 端點通訊協定,請考量下列網路需求:
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 叢集。
控制台
在 Google Cloud 控制台中,開啟 Dataproc 的「建立叢集」頁面:
在「叢集名稱」欄位中,輸入叢集的名稱。
在「Region」(區域) 和「Zone」(可用區) 選單中,選取建立 Dataproc Metastore 服務所在的區域。你可以選擇任何區域。
按一下「Customize cluster」(自訂叢集) 分頁標籤。
在「網路設定」部分,選取您建立 Dataproc Metastore 服務時使用的網路。
在「Dataproc Metastore」部分,選取要附加的 Dataproc Metastore 服務。如果尚未建立服務,可以選取「建立新服務」。
選用:如果 Dataproc Metastore 服務使用 gRPC 端點通訊協定:
- 按一下「管理安全性」分頁標籤。
- 在「專案存取權」部分,選取「為這個叢集啟用 cloud-platform 範圍」。
視需要設定其餘服務選項。
如要建立叢集,請按一下「建立」。
新叢集會出現在「叢集」清單中。在叢集準備好可以使用之前,叢集狀態會列示為「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_URI
和 WAREHOUSE_DIR
。
如果 Dataproc Metastore 服務使用 Private Service Connect,或是您想將 Dataproc 叢集連結至 Dataproc Metastore 服務的輔助版本,請按照這些操作說明進行。
您可以使用 ENDPOINT_URI
和 WAREHOUSE_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_DIR
:Hive 倉庫目錄的位置。
方法 2:更新 hive-site.xml
檔案
您也可以直接修改叢集的 hive-site.xml
檔案,附加 Dataproc 叢集。
.*-m
使用 SSH 連線至叢集。開啟
/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>
更改下列內容:
重新啟動 HiveServer2:
sudo systemctl restart hive-server2.service
自行管理的叢集
自行管理的叢集可以是 Apache Hive 執行個體、Apache Spark 執行個體或 Presto 叢集。
附加自行管理的叢集
在用戶端設定檔中設定下列值:
hive.metastore.uris=ENDPOINT_URI
hive.metastore.warehouse.dir=WAREHOUSE_DIR
更改下列內容: