配置MySQL保存Hive元数据

文章讲述了如何将Hive的元数据存储从默认的Derby数据库切换到MySQL,以实现多个hiveshell并发连接。主要步骤包括修改hive-site.xml配置文件,添加MySQL数据库的相关属性,放置MySQL驱动到Hive的lib目录,并使用schematool初始化数据库。完成后,Hive支持了多个客户端的并发登录。

Hive默认使用自带(内嵌)的Derby进行元数据存储,这个就意味着无法实现多个hive shell并发连接Hive。如果需要支持多用户登录Hive,必须配置一个独立的数据库。上一节我们已经将MySQL数据库安装到Linux上,本节我们将讲解一下配置MySQL保存Hive元数据的步骤。

(1)修改hive-site.xml文件

我们继续以MySQL为例,首先需要在文件hive-site.xml中配置MySQL数据库的相关属性,如表2-3所示。

表2-3  MySQL数据库的相关属性配置

 

在hive/conf目录下有一个hive-default.xml.template文件,里面都是默认的配置。打开这个文件可以发现一些说明文字,如图2-43所示。

 

图2-43

意思是:如果要使配置生效,需要添加hive-site.xml文件,可以直接把这个文件复制为hive-site.xml再做配置。当然,为了简单起见,我们也可以直接使用2.4.1小节中自己创建的hive-site.xml。

打开hive-site.xml文件,把里边内容全部删除,再添加以下配置:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://server201:3306/hive?useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>A1b2c3==</value>
    </property>
</configuration>

这个配置需要我们在MySQL中手动创建hive数据库。以下配置相同,只是多了一个createDatabaseIfNotExist设置,设置为true时不需要在MySQL中手工创建hive数据库:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://server201:3306/hive?createDatabaseIfNotExist =true&useSSL=false</value>
    </property>
<property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>A1b2c3==</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/app/hive-3.1.3/warehouse</value>
    </property>
</configuration>

(2)将MySQL的驱动放到/app/hive-3.1.3/lib目录下:

[root@server201 lib]$ ll | grep mysql
-rw-r--r--.  1 hadoop hadoop   2480823 12月 26 2022 mysql-connector-j-8.0.32

(3)登录hive cli

可以直接使用以下命令来初始化数据库:

[root@server80 bin]#./schematool -initSchema -dbType mysql

运行结果如图2-44所示,表示成功初始化数据库。

 

图2-44

如果使用MySQL客户端工具登录MySQL,就会在MySQL数据库hive中发现如图2-45所示的数据表(部分截图)。

 

图2-45

现在Hive就能支持多个hive cli客户端登录了。

本文节选自《Hive入门与大数据分析实战》,内容发布获得作者和出版社授权。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值