一、Hive–Service Metastore簡介
Hive–Service Metastore是Apache Hive的元數據存儲系統。它是在Hive v0.6.0中引入的,Hive將所有元數據(表名、列名、列類型等)存儲在Metastore中,這樣用戶就可以將它們用於不同的Hive實例。
Service Metastore由兩個核心組件構成:Metastore server和Metastore client。Metastore server用於管理元數據,而Metastore client充當Hive client和Metastore server之間的HTTP層,它可以使Hive client與遠程Metastore server通信。
二、Metastore server和Metastore client詳解
1. Metastore server
Metastore server主要由以下組件構成:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-metastore</artifactId>
<version>2.3.2</version>
</dependency>
Metastore server是元數據的管理者。在Metastore中,它扮演著關鍵的角色:管理Hive表、分區、列和其他模式信息。
Metastore server使用RDBMS存儲元數據。默認情況下,它使用Derby存儲元數據。但是,可以在hive-site.xml文件中配置Hive以使用MySQL/MariaDB、PostgreSQL或Oracle等資料庫。
2. Metastore client
Metastore client是Hive與Metastore server之間通信的HTTP層,它主要由以下組件構成:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-metastore</artifactId>
<version>2.3.2</version>
</dependency>
Metastore client是由Hive CLI、HiveServer2、Beeline等Hive組件使用的API套件。它使用Thrift協議定義API,可以基於Java、Python或Ruby等語言創建Hive client。
三、Metastore的配置和操作
1. Metastore的配置
要配置Hive以使用Metastore,需要修改hive-site.xml文件。以下是hive-site.xml文件中Metastore的默認配置:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>APP</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mine</value>
<description>password to use against metastore database</description>
</property>
要使用非默認RDBMS,用戶可以按照以下步驟修改hive-site.xml文件:
1.啟用JDBC Metastore
<property>
<name>hive.metastore.uris</name>
<value>thrift://localhost:9083</value>
</property>
2.更改連接URL:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value>
</property>
3.修改自己的連接器/驅動程序
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
4.修改自己的資料庫用戶名和密碼
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
2. Metastore的操作
在Hive中,我們可以使用以下命令操作Metastore的元數據:
1. 創建表
CREATE TABLE IF NOT EXISTS employee (
id INT,
name STRING,
age INT
)
2. 查看錶結構
DESCRIBE employee;
3. 向表添加數據
INSERT INTO employee VALUES (1, 'tom', 22);
4. 查看錶數據
SELECT * FROM employee;
5. 刪除表
DROP TABLE IF EXISTS employee;
四、總結
通過本文的詳細闡述,我們了解了Hive–Service Metastore的組件、使用場景、配置方法以及操作方式。它是Hive的核心組件之一,管理著Hive的元數據,使Hive能夠讀取和寫入大數據存儲和分析。希望本文對您有所幫助。
原創文章,作者:DUZQR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/351547.html