hive 2.1.1 mysql_Hive 2.1.0-用mysql作metastore数据库-安装配置和问题

本文详细介绍了如何在Hive 2.1.1中使用MySQL作为Metastore数据库的安装和配置过程,包括安装Hive和MySQL,设置环境变量,初始化Hive Metastore数据库,创建数据库用户,配置hive-env.sh和hive-site.xml,以及解决权限和连接问题。通过这些步骤,成功实现Hive与MySQL的集成。
摘要由CSDN通过智能技术生成

Hive 2.1.0-用mysql作为metastore数据库-安装配置和问题

环境虚拟机:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册Hadoop

伪分布式的hadoop 2.7.3

下载hive 2.1,解压,放到喜欢的文件夹下面

下载apache-hive-2.1.0-bin.tar.gz,解压,放到喜欢的位置.本文放在用户whm的home文件夹.

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

配置HOME_HIVE和PATH

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

在hadoop里建立tmp和warehouse文件夹,更改权限

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

hive的hive-site.xml中,默认的warehouse地址是/user/hive/warehouse,也可以使用默认值.

安装mysql

使用mysql作为metastore数据库.

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

里面有一条:

mysql-server.x86_64 : The MySQL server and related files

安装它:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

安装mysql-connector并复制到hive的lib

刚才yum search的时候,有一条:

mysql-connector-java.noarch : Official JDBC driver for MySQL

安装它:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

安装好后在/usr/share/java/文件夹.

拷贝到hive的lib文件夹:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

在mysql中,添加hive metastore数据库,初始化

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

创建hive metastore数据库,本文这个数据库叫hive:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

使用hive的schematool初始化(在hive的bin目录):

当前内容已被隐藏,您需要登录才能查看快速登录快速注册The Hive distribution now includes an offline tool for Hive metastore schema manipulation. This tool can be used to initialize the metastore schema for the current Hive version. It can also handle upgrading the schema from an older version to current. It tries to find the current schema from the metastore if it is available. This will be applicable to future upgrades like 0.12.0 to 0.13.0. In case of upgrades from older releases like 0.7.0 or 0.10.0, you can specify the schema version of the existing metastore as a command line option to the tool.

The schematool figures out the SQL scripts required to initialize or upgrade the schema and then executes those scripts against the backend database. The metastore DB connection information like JDBC URL, JDBC driver and DB credentials are extracted from the Hive configuration. You can provide alternate DB credentials if needed.

注意 :

不知道可不可以不初始化,但是,如果初始化,一定要使用这个schemetool...一开始参考的一篇文章是手动初始化:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

查看$HIVE_HOME/scripts/metastore/upgrade/mysql/,确实有这些文件:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

但如果如法炮制2.1.0的话,就会报错:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

因为参考的0.14版本,虽然也有txn那个文件,但是scheme文件中完全没有用到txn文件

而2.1.0的scheme文件中有一句:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

都没有绝对路径当然找不到了...

如果试图手动改成绝对路径重新执行的话,因为其他的sql语句里有一些insert,就会报一些Duplicate key name,Duplicate entry等错误...而且txn那个文件里建表不检查是否exists,多执行几遍又会报表已经存在错误..

**使用schemetool就可以避免这些麻烦,而且很明确的知道是否初始化成功. **

在mysql中,添加连接metastore使用的user,授权

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

此处hiveuser替换为喜欢的名字,hivepassword替换为喜欢的密码.本文直接使用这俩...

配置hive-env.sh

复制template:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

配置:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

配置hive-site.sml

复制template:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

配置:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

改后面5个属性的文件夹,是因为我的报过错,然后在网上找的解决办法:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

如果幸运的话,就可以用了

Hive console

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

查看metastore:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

beeline连接hiveserver2

连接之前要先设置代理用户,否则会报错.

在hadoop的core-site.xml中,设置如下属性(proxyuser后面是运行hive的超级用户,本文用whm运行):

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

设置了以后, 无论使用什么用户登陆 (后面举例使用whatever),都使用hive超级用户 (本文是whm用户, 其启动了hiveserver2) 来代理whatever, 使whatever以whm的权限进行操作, 但所建立的表还是属于whatever.后面有例子.

在一个窗口中启动hiveserver2:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

此时jps,多了一个RunJar:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

另一个窗口启动beeline,用户名写随便什么都可以,密码空,直接回车.(能做到这一点和我们前面把hdfs上的文件夹/tmp和/hive/warehouse权限设置为777有关.)

比如先用whm连接,建表, 再用随便起的whatever连接, 建表,效果如下:

whm连接:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

whatever连接:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

如果之前warehouse没有设置为777,会报错:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

当然如果只用hive超级用户连接不必设置为777,设置为775就可以了.

此时hdfs上,warehouse:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

表whatevertest属于用户whatever, 其他的属于whm.

删除表:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

warehouse:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

但还有一个疑问

为什么不设置代理用户,用whm连接会报错呢?不输密码报错:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

User: whm is not allowed to impersonate whm

whm不允许模拟whm...

输密码 (输了用户在linux的密码) 也报错:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

beeline也是whm启动的,hiveserver2也是whm启动的,whm都是它们的超级用户.

使用whm作为beeline连接时的用户名,为什么也需要设置代理用户呢...

其他

最初安装的时候不知怎么搞得把mysql搞坏了,hive那边可以正常建表,hdfs上也能看到,但是mysql的TBLS表里就是没有信息,Empty Set.于是完全卸载重装mysql:

当前内容已被隐藏,您需要登录才能查看快速登录快速注册

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值