前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache-Hive 使用MySQL存储Hive的元数据

Apache-Hive 使用MySQL存储Hive的元数据

作者头像
泰坦HW
发布2020-08-12 10:13:07
2.8K0
发布2020-08-12 10:13:07
举报
文章被收录于专栏:Titan笔记Titan笔记

默认情况下,Hive的元数据是存储到Derby中的,这是Apache的一个纯Java编写的小巧数据库,类似于Sqlite。但是这样就会出现一个情况:Derby是单例的,当你在一个终端打开了hive时,在另外一个终端打开hive命令行会报错。所以使用MySQL来存储元数据能够解决这个问题,并且也更方便迁移和备份。

MySQL的安装与配置

1. 安装 Mysql-Community-Server
  • 下载Mysql的RPM包:https://dev.mysql.com/downloads/repo/yum/ ,上传到机器中,假设文件名为mysql-server.rpm
  • 以root权限下执行 rpm -ivh mysql-server.rpm
  • 安装mysql服务器 yum -y install mysql-community-server
  • 待安装完成后,找到初始密码 sudo grep 'temporary password' /var/log/mysqld.log
  • 打开mysql客户端 mysql -uroot -p,输入初始密码后,登录成功
  • 修改初始密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]';其中[email protected]为你想设置的密码。

更详细的安装手册可以通过 https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 查阅

2. 配置Mysql服务

安装Mysql服务器之后,你需要配置允许root用户的登录权限

  • 打开MySQL客户端 mysql -uroot -p
  • 使用Mysql数据库 use mysql
  • 查询user表 select User, Host from user;
  • 修改uesr表,将Host字段修改为 % ,即允许任何主机登录update user set host='%' where user='root';
  • 更新Mysql的权限信息 flush privileges;

通过上述操作,就解决了用户登录可能遇到的权限问题。

3. 导入Mysql-Connector

配置Hive中MySQL的连接

第一步,在Hive的conf目录中新建文件hive-site.xml

第二步,配置如下信息

代码语言:javascript
复制
<?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://localhost:3306/hive_metastore?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>[email protected]</value>
    </property>
</configuration>

最后,使用 schematool 工具的初始化命令进行初始化

使用 schematool 工具的初始化命令进行初始化
使用 schematool 工具的初始化命令进行初始化

需要注意的是:在配置过程中,可能会出现一些问题,这里记录一下我所遇到的问题及解决方案:

1、在配置完成后执行 drop table table_name 的删除表操作命令Cli无响应:

这是由于指定存储 Hive的metastore 的MySQL数据库的字符集格式问题。如上图,字符集格式为utf8mb4,这样就可能会导致出现drop table的问题。解决方案是删除数据库,重新新建数据库并指定字符集为lantin1,排序规则为latin1_bin 即可。

2、配置MySQL后,第一次打开hive的时候Cli无响应:

这个问题查阅了很多资料并没有找到更加详细的信息,但是经过DEBUG初步判断还是MySQL数据库的问题,导致Hive第一次启动时无法正常完成Metastore的数据表的初始化,按照上述第三步,在启动Hive前初始化下数据表即可:使用 schematool -dbType mysql -initSchema 命令进行初始化。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年08月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL的安装与配置
    • 1. 安装 Mysql-Community-Server
      • 2. 配置Mysql服务端
        • 3. 导入Mysql-Connector
        • 配置Hive中MySQL的连接
          • 需要注意的是:在配置过程中,可能会出现一些问题,这里记录一下我所遇到的问题及解决方案:
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档