Dataproc Metastore 是全代管、高可用性、自動修復、無伺服器的 Apache Hive 中繼存放區 (HMS),可在 Google Cloud上執行。
為全面管理中繼資料,Dataproc Metastore 會將資料對應至 Apache Hive 資料表。
支援的 Apache Hive 版本
Dataproc Metastore 僅支援特定版本的 Apache Hive。詳情請參閱 Hive 版本政策。
Hive 處理中繼資料的方式
由於 Dataproc Metastore 是 Hive 中繼存放區,因此請務必瞭解其如何管理中繼資料。
根據預設,所有 Hive 應用程式都可以有受管理的內部資料表或未受管理的外部資料表。也就是說,您儲存在 Dataproc Metastore 服務中的中繼資料可同時存在於內部和外部資料表中。
修改資料時,Dataproc Metastore 服務 (Hive) 會以不同的方式處理內部和外部資料表。
- 內部表格。管理中繼資料和表格資料。
- 外部資料表。僅管理中繼資料。
舉例來說,如果您使用 DROP TABLE
Hive SQL 陳述式刪除資料表定義:
drop table foo
內部表格。Dataproc Metastore 會刪除所有中繼資料。並刪除與資料表相關聯的檔案。
外部資料表。Dataproc Metastore 只會刪除中繼資料。它會保留與資料表相關聯的資料。
Hive 倉庫目錄
Dataproc Metastore 會使用 Hive 倉庫目錄來管理內部資料表。Hive 倉儲目錄是實際資料的儲存位置。
使用 Dataproc Metastore 服務時,預設的 Hive 倉儲目錄為 Cloud Storage 值區。Dataproc Metastore 只支援使用 Cloud Storage 值區做為倉庫目錄。相較之下,這與內部 HMS 不同,因為在內部 HMS 中,Hive 倉儲目錄通常會指向本機目錄。
每次建立 Dataproc Metastore 服務時,系統都會自動為您建立這個值區。您可以為 hive.metastore.warehouse.dir
屬性設定 Hive Metastore 設定覆寫值,藉此變更這個值。
成果 Cloud Storage 值區
構件值區會儲存 Dataproc Metastore 構件,例如匯出的中繼資料和受管理的內部資料表資料。
建立 Dataproc Metastore 服務時,系統會在專案中自動為您建立 Cloud Storage 值區。根據預設,構件值區和倉庫目錄都會指向相同的值區。您無法變更構件值區的位置,但可以變更 Hive 倉庫目錄的位置。
構件值區位於以下位置:
gs://your-artifacts-bucket/hive-warehouse
。- 例如
gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4
。
存取 Hive 倉儲目錄
系統自動為您建立值區後,請確認您的 Dataproc 服務帳戶具備存取 Hive 倉儲目錄的權限。
如要存取倉儲目錄的物件層級 (例如 gs://mybucket/object),請使用
roles/storage.objectAdmin
角色,將值區的儲存空間物件讀取和寫入權限授予 Dataproc 服務帳戶。這個角色必須設在資料夾層級或更高層級。如要使用頂層資料夾 (例如 gs://mybucket) 存取倉儲目錄,請使用
roles/storage.storageAdmin
角色,將值區的儲存空間物件的讀取和寫入權限授予 Dataproc 服務帳戶。
如果 Hive 倉庫目錄與 Dataproc Metastore 位於不同的專案中,請確認 Dataproc Metastore 服務代理人有權存取 Hive 倉庫目錄。Dataproc Metastore 專案的服務代理程式為 service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com
。使用 roles/storage.objectAdmin
角色,向服務代理授予值區的讀取及寫入權限。
找出 Hive 倉儲目錄
- 開啟 Dataproc Metastore 頁面。
按一下服務名稱。
服務詳細資料頁面隨即開啟。
在設定表格中,依序找到「中繼儲存庫設定覆寫」 >「hive.metastore.warehouse.dir」。
找出開頭為
gs://
的值。這個值是 Hive 倉儲目錄的位置。
變更 Hive 倉儲目錄
如要將自己的 Cloud Storage 值區與 Dataproc Metastore 搭配使用,請將 Hive Metastore 設定覆寫值設為指向新的值區位置。
如果變更預設倉庫目錄,請按照下列建議操作。
請勿使用 Cloud Storage 值區根目錄 (
gs://mybucket
) 儲存 Hive 資料表。請確認 Dataproc Metastore VM 服務帳戶具備存取 Hive 倉庫目錄的權限。
為獲得最佳結果,請使用與 Dataproc Metastore 服務位於相同區域的 Cloud Storage 值區。雖然 Dataproc Metastore 允許跨區域的資料夾,但同址資源的效能會更好。舉例來說,歐盟多地區值區無法與
us-central1
服務搭配使用。跨區域存取會導致較高的延遲、缺乏區域故障隔離機制,以及跨區域網路頻寬的費用。
如何變更 Hive 倉儲目錄
- 開啟 Dataproc Metastore 頁面。
按一下服務名稱。
服務詳細資料頁面隨即開啟。
在設定表格中,依序找到「Metastore 設定覆寫」 >「hive.metastore.warehouse.dir」部分。
將
hive.metastore.warehouse.dir
值變更為新桶的所在位置。例如:gs://my-bucket/path/to/location
。
刪除值區
刪除 Dataproc Metastore 服務不會自動刪除 Cloud Storage 構件值區。您的儲存體不會自動刪除,因為儲存體可能含有有用的服務後資料。如要刪除值區,請執行 Cloud Storage 刪除作業。