Apache-Hive 使用MySQL存储Hive的元数据
时间:2022-07-23
本文章向大家介绍Apache-Hive 使用MySQL存储Hive的元数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
默认情况下,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
- 在Mysql的官方下载界面:https://dev.mysql.com/downloads/connector/j/ 下载Mysql-Connector
- 解压后获得mysql-connector-java-8.0.21.jar,将jar包移动至
/opt/apache-hive-1.2.2-bin/lib
下
配置Hive中MySQL的连接
第一步,在Hive的conf目录中新建文件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://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
工具的初始化命令进行初始化
需要注意的是:在配置过程中,可能会出现一些问题,这里记录一下我所遇到的问题及解决方案:
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
命令进行初始化。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 96. 不同的二叉搜索树 II Krains 2020-09-03 树
- 410. 分割数组的最大值 Krains 2020-08-29 20:21:39 动态规划二分查找
- 字典树 Krains 2020-09-01
- redis学习(十)
- vue修改浏览器的标题title
- 天天基金网数据接口
- Centos7实现开机自启EasySwoole
- input内文字与光标的初始位置调整
- 小程序push、unshift、concat
- mac下导出chrome插件及安装
- Job 资源对象
- ReplicaSet && DaemonSet 资源对象
- 批量执行crontab指定条目的注释和解注释
- Rancher集群部署后需要做的几件事
- Ingress(Nginx)日志持久化与可视化(多图预警)