一、概述
Metastore是Hive表的元數據存儲倉庫,它是一個獨立的進程,處理包括表名、列名、數據類型和表的存儲位置在內的各種元數據。
Metastore 可能是獨立的進程,也可能與 Hive Server 2 在同一個進程中運行。元數據被存儲在一個關係型數據庫中,如 MySQL 或 PostgreSQL。通過使用 Metastore,用戶可以在 Hive 中創建表並訪問和管理數據。
二、Metastore的架構
Metastore 的架構主要由以下幾個部分組成:
- Metastore Server
- Metastore Client
- 數據庫
- Filesystem
1. Metastore Server
Metastore Server 是 Hive 元數據存儲庫的主體。它是一個獨立的進程,用於管理並處理元數據,支持各種元數據操作,例如創建表、更新表結構和刪除表等。Metastore Server 運行在一個單獨的 JVM 中,與存儲元數據的 RDBMS 直接通信。
2. Metastore Client
Metastore Client 用於管理和處理 Hive 表的元數據。當用戶在 Hive 中創建、更新或刪除 Hive 表時,Metastore Client 與 Metastore Server 直接通信。Metastore Client 運行在一個單獨的 JVM 中,與存儲元數據的 RDBMS 直接通信。
3. 數據庫
Metastore 使用 MySQL、PostgreSQL、MariaDB、Oracle 或 Derby 等關係型數據庫存儲 Hive 表的元數據。
4. Filesystem
Filesystem 用於存儲 Hive 表的數據。當 Hive 表被創建時,Filesystem 會創建一種數據存儲格式和存儲位置,並將其存儲在 Hive 配置中指定的 HDFS、S3、Azure Blob 存儲或本地文件系統中。
三、Metastore的作用
1. 管理 Hive 表的元數據
元數據是描述 Hive 表的信息,包括字段類型、位置、格式等,元數據是 Hive 表的關鍵。Metastore 負責維護所有 Hive 表的元數據,可以說,沒有 Metastore,就沒有 Hive。
2. 管理 Hive 表的權限
Metastore 還負責管理表的所有者和權限。在 Hive 中,通過為 Hive 表設置 ACL(訪問控制列表),Metastore 可以確定用戶或組對 Hive 表的訪問權限。
3. 幫助優化 Hive 查詢
Metastore 可以為 Hive 表提供統計信息,這些統計信息包括表中記錄數、字段數量、字段長度、最小值、最大值等。通過使用這些信息,Hive 可以優化查詢並提高查詢性能。
4. 支持擴展
Metastore 支持用戶定義的表屬性和擴展的元數據存儲,這意味着用戶可以將其自己的元數據存儲在 Metastore 中,從而更好地管理和使用他們的 Hive 表。
四、案例:使用Metastore創建Hive表
Hive 的主要作用是讓開發人員能夠使用 SQL 語言操作 Hadoop,簡化 Hadoop 的使用。其中,Metastore 負責維護所有 Hive 表的元數據。
1. 配置Metastore
首先需要配置 Metastore Server,為了演示方便,我們選用MySQL 作為存儲 Hive 表元數據的 RDBMS。
創建 MySQL 數據庫
CREATE DATABASE metastore_db;
創建 MySQL 用戶
CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'hivepassword'; GRANT ALL PRIVILEGES ON metastore_db.* TO 'hiveuser'@'localhost'; FLUSH PRIVILEGES;
創建數據庫表結構並初始化
在 Hive 安裝目錄下的 scripts/metastore/upgrade/mysql/ 中有一個腳本 hive-schema-2.1.0.mysql.sql,用它創建數據庫表結構。
啟動 Metastore Server
執行以下命令啟動 Metastore Server,它將綁定在 localhost:9083 端口上:
hive --service metastore
2. 創建Hive表
創建一個名為 employee 的 Hive 表,表有兩個字段 ID 和 Name:
CREATE TABLE employee ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
3. 查看Hive表的元數據
使用 show create table employee 命令查看錶的創建語句和元數據:
SHOW CREATE TABLE employee;
4. 修改Hive表的元數據
如果需要修改 Hive 表的元數據,可以使用 ALTER TABLE 命令進行更改,例如:
ALTER TABLE employee ADD age INT;
5. 刪除Hive表
如果要刪除表,可以使用DROP TABLE命令。運行命令後,Hive 僅刪除表的元數據,而不刪除表的數據:
DROP TABLE employee;
五、總結
Metastore 是 Hive 表的元數據存儲倉庫,用於管理 Hive 表的元數據、權限和優化 Hive 查詢。Metastore 與 Hive Server 2 獨立運行,元數據存儲在關係型數據庫中,支持用戶自定義的表屬性和元數據存儲擴展。Metastore 是使用 Hive 的關鍵部分,它簡化了 Hadoop 的使用和數據管理。
原創文章,作者:KPOES,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/331557.html