登录    关于
马育民老师的博客

马育民的博客

QQ:65242847

hive教程:使用mysql存储元数据

derby的缺点

默认使用 derby ,只能启动一个 hive 客户端,再启动一个 hive 客户端就会报错,在企业开发中,是肯定不行的

安装mysql

hive3.1.x centos7安装部署mysql5.7.32(.tar.gz解压缩版)

复制mysql驱动

将 mysql 驱动 mysql-connector-java-5.1.47.jar 上传到 /program/hive-3.1.2/lib/ 目录下

配置

/program/hive-3.1.2/conf 目录下新建 hive-site.xml 文件

执行下面命令:

cd /program/hive-3.1.2/conf
vim hive-site.xml

内容如下:

注意: ip、port、用户名、密码

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc 连接的 URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/metastore?useSSL=false</value>
    </property>

    <!-- jdbc 连接的 Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <!-- 连接的mysql的用户名-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <!-- 连接的mysql的密码 -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>

    <!-- Hive 元数据存储版本的验证,只derby需要验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>

    <!--元数据存储授权,只derby需要授权-->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <!-- Hive 默认在 HDFS 的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/hive/warehouse</value>
    </property>
</configuration>

注意修改mysql的用户名、密码

mysql创建hive元信息数据库

登录 MySQL

mysql -uroot -proot

新建 Hive 元数据库

create database metastore;

退出

exit

quit

初始化 Hive 元数据库

schematool -initSchema -dbType mysql -verbose

解释:

  • -verbose:显示详细信息

显示如下信息表示成功:

Initialization script completed
schemaTool completed

启动hive

注意:需要先启动 hadoop NameNode 和 DataNode、yarn

/program/bin/hadoop.sh start
hive

测试启动多个hive

之前的 hive客户端 不关闭,再次打开 hive

hive

测试使用

查询

select * from t_user;

显示如下:

OK
1       lilei   123456

数据保存在 hadoop中,所以 之前的 数据 还在,只是保存 元数据 的数据库换成 mysql

插入数据

insert into t_user(id,username,password) values (2,'hanmeimei','11111');

查看hadoop web管理页面

多出一个文件 000000_0_copy_1


原文出处:https://malaoshi.top/show_1IXjcFzxCDV.html