如何安装和配置HIVE Metastore与MYSQL

什么是HIVE Metastore?

Hive metastore 是一个存储与 Apache Hive 相关元数据(列名、数据类型、注释等)的存储库,它使用 MySQL 或 PostgreSQL。这个 Hive metastore 是使用关系数据库中的表来实现的。

为什么要在 Hive 中使用 MySQL 作为 Metastore

  • 默认情况下,Hive 的 metastore 使用 derby 数据库。
  • Derby 数据库一次只能支持一个活动用户
  • Derby 不推荐用于生产环境

所以这里的**解决方案**是

  • 使用 MYSQL 作为后端元存储,以便多个用户可以同时连接 Hive
  • MYSQL 是独立 metastore 的最佳选择

如何安装和配置 Hive Metastore 到 MySQL 数据库

第 1 步:安装 MySQL 服务器
在此步骤中,我们将执行两项任务

  1. 安装 mysql-server
  2. 检查 mysql-server 及其进程
  1. 使用 `sudo apt-get install mysql-server` 命令,我们可以下载 mysql 服务器

按照屏幕截图安装 MySQL

Install and Configure Hive Metastore to MySQL Database

  1. 成功安装后,MySQL 将按如下屏幕截图所示运行

Install and Configure Hive Metastore to MySQL Database

第 2 步:安装 MySQL Java 连接器
安装 MySQL Java 连接器。这是为了 java 依赖关系和连接目的。

Install and Configure Hive Metastore to MySQL Database

第 3 步:为连接器创建软链接
在 Hive 库目录中为连接器创建软链接。这是为了 Java 和 MySql 之间的软链接。

Install and Configure Hive Metastore to MySQL Database

第 4 步:在 Hive 中配置 MySql 存储

Install and Configure Hive Metastore to MySQL Database

  • 键入 `MySql –u root –p`,后跟密码
  • 其中 –u 代表 root 用户名,p 代表密码
  • 输入上述命令后,用户必须输入有效密码,然后按 Enter 键
  • 然后它将进入 MySql shell 模式

第 5 步:创建用户名和密码
为 MySql 创建用户名和密码,授予权限。

Install and Configure Hive Metastore to MySQL Database

我们必须执行如下命令:

mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; 
mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword';
mysql>  flush privileges;

第 6 步:配置 hive-site.xml

  • 在第 5 步之后,为 MySQL 数据库分配用户名和密码并授予权限。
  • 在这里,我们将配置 Hive 中的一些属性以连接到 MySQL 数据库。

Install and Configure Hive Metastore to MySQL Database

Install and Configure Hive Metastore to MySQL Database

从上面的屏幕截图中,我们观察到以下内容。在这里,我们定义了 4 个属性,这些属性对于将 MYSQL 设置为 Hive 中的 Meta store 是必需的。

它们如下:

  1. 此属性用于连接 URL。在这里,我们在该属性中定义了 ConnectionURL。它充当 JDBC 连接,并且还代表了 metastore 的位置。
  2. 此属性用于连接驱动程序名称。在这里,mysql.jdbc.Driver 是我们必须在 value 标签中提到的相应值。
  3. 此属性用于定义连接用户名。在这里,我们将“hiveguru”定义为用户名。
  4. 此属性用于提及连接密码。在这里,我们将密码定义为用户密码。

将属性放入 hive-site.xml 后,我们必须手动保存(Ctrl+S)并关闭文件。关闭此文件后,我们需要创建 Hive 表并在 MySQL 存储中检查表详细信息。

将此代码放入 hive-site.xml

hive-site.xml

<configuration>
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql:///metastore?createDatabaseIfNotExist=true</value>
		<description>metadata is stored in a MySQL server</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
		<description>MySQL JDBC driver class</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>hiveuser</value>
		<description>user name for connecting to mysql server</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>hivepassword</value>
		<description>password for connecting to mysql server</description>
	</property>
</configuration>

第 7 步:创建表
在 Hive 中创建名为“guru99”的表。

Install and Configure Hive Metastore to MySQL Database

从上面的屏幕截图中,我们可以观察到以下内容

  • 创建表名“guru99”,包含两个列名
  • 提到的列名及其数据类型,一个是整数,另一个是字符串类型

在下一步中,我们将检查它是否存储在 MySql 中

第 8 步:进入 MySql shell 模式

Install and Configure Hive Metastore to MySQL Database

从上面的屏幕截图中,我们可以观察到以下内容

  • 首先,我们必须使用数据库“use metastore”
  • 一旦选择 `metastore`,我们就可以使用“show tables”命令检查此处的表,如屏幕截图所示
  • 无论在 Hive 中创建了什么表,相应的元数据都存储在 MySQL 的 TBLS 下。
  • Hive 中创建了“Guur99 table”,因此相应的元数据存储在 MySQL 的 TBLS 中。

第 9 步:输入 select * from TBLS
检查创建的表是否存在于 MySQL 中

Install and Configure Hive Metastore to MySQL Database

通过输入 `select * from TBLS`,它将显示我们在 Hive shell 模式下创建的表

从上面的屏幕截图中,我们可以观察到以下内容

  • 在 Hive 中创建的表名“guru99”可以在 MySQL shell 模式下显示
  • 此外,它还将提供表创建时间、访问时间和屏幕截图所示的其他属性等信息。