Hive安装配置(集成mysql数据库)

开发环境

Ubuntu18.04+Hadoop2.7.7+Hbase1.3.3+Hive1.2.2+MySQL5.7.26

安装

1.下载hive安装包

下载地址

将安装包复制到/usr/local中,执行命令

sudo cp apache-hive-1.2.2-bin.tar.gz /usr/local
cd /usr/local                                 //进入/usr/local
sudo tar -zxvf apache-hive-1.2.2-bin.tar.gz   //解压
sudo mv apache-hive-1.2.2-bin hive            //重命名目录
sudo chown -R hadoop:hadoop hive              //修改目录权限

2.修改环境变量

把hive命令加入到环境变量中去,编辑~/.bashrc文件 

sudo vim ~/.bashrc

添加如下语句

export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH

修改完后执行命令使修改生效:

source ~/.bashrc

3.修改hive-site.xml

进入hive/conf/,复制hive-default.xml,新建一个hive-site.xml文件

cp hive-default.xml.template hive-default.xml
touch 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://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

这些语句的作用是让hive使用MySQL数据库,因为hive是默认将元数据保存在本地内嵌的 Derby 数据库中,但是这种做法有缺点,即Derby不支持多会话连接,因而选择mysql作为元数据存储。

其中,连接的MySQL中的hive数据库为hive,用户为hive,密码为hive

4.配置MySQL

MySQL安装见另一篇博客:Linux Ubuntu18.04安装MySQL总结

下载mysql jdbc包,可以去官网下载:下载地址,也有已经下载好的:下载地址

将mysql jdbc包复制到 /hive/lib 中

cp mysql-connector-java-5.1.47-bin.jar  /usr/local/hive/lib

进入MySQL:

service mysql start
mysql -uroot -p

创建hive数据库和hive用户,并将所有数据库的所有表的所有权限赋给hive用户,最后刷新mysql系统权限关系表,使之生效。

create database hive;
create user 'hive'@'localhost' identified by 'hive';
grant all on *.* to hive@localhost identified by 'hive';  //第二个hive是配置用户hive的连接密码
flush privileges;

初始化mysql,进入hive/bin,执行命令(要在mysql中hive数据库创建好后执行):

schematool -dbType mysql -initSchema

最后输出schemaTool completed表示初始化成功。

其中,schematool是Hive分布现在包含一个用于 Hive Metastore 架构操控的脱机工具,可用于初始化当前 Hive 版本的 Metastore 架构。此外,schematool还可处理从较旧版本到新版本的架构升级。

5.测试

终端输入hive进入hive的shell命令行,创建一个测试数据库

create database test;
show databases;

创建测试表

create table test1;
show tables;

测试成功。

 

常见问题

1.Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
*** schemaTool failed ***

当我们已经执行schematool -initSchema -dbType mysql初始化过mysql,再次执行会出现此错误,可以查看mysql是否已经创建了hive这个表, 如果已创建,而想重新安装的话,把已创建的表删了即可。

2.ls: cannot access '/usr/local/spark/lib/spark-assembly-*.jar': No such file or directory
若安装了spark,在hive启动时会报这个错误,原因是这个jar包在新版本的spark中的位置已经改变,我们要将hive中的启动文件中的sparkAssemblyPath更改为你安装的spark的jar包路径:

进入hive/bin,编辑hive文件

在116行,有jar包路径信息,将其更改为:

再次输入hive,就不会再出现警告了。

3.Hive metastore database is not initialized

原因:以前曾经安装了Hive或MySQL,重新安装Hive和MySQL以后,导致版本、配置不一致。解决方法是,使用命令

schematool -dbType mysql -initSchema

即可。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值