Hive安装配置及错误解决办法
一、准备
mysql,hive安装包,mysql驱动
(我的安装包是apache-hive-1.2.1-bin.tar.gz,驱动是mysql-connector-java-5.1.28.jar)
二、安装
第一步:安装mysql数据库及客户端
apt-get install mysql-server
apt-get install mysql
service mysqld start(centos)或/etc/init.d/mysql start
第二步:给数据库授权
mysql -u用户名 -p密码
grant all privileges on *.* to '数据库用户名'@'%' identified by '数据库密码' with grant option;
flush privileges;
【注意】授权后一定要重启数据库服务
service mysqld restart(centos)或/etc/init.d/mysql restart
第二步:解压缩到你准备好的文件夹中,我解压到 ~/Bigdata
tar -zvxf apache-hive-1.2.1-bin.tar.gz -C ~/Bigdata
注:我的压缩包就在当前目录下,否则需要在前面加上路径
第三步:创建软链接
ln -s apache-hive-1.2.1-bin hive
第四步:设置环境变量
sudo vi /etc/profile
在里面加入下面两行代码
#HIVE_HOME=(此处写的是你的解压后hive所在的位置)例如:
export HIVE_HOME=/home/briup/Bigdata/hive
export PATH=$HIVE_HOME/bin:$PATH
第五步:修改配置文件
cd ~/Bigdata/hive/conf
cp hive-default.xml.template hive-site.xml
vi hive-site.xml
在hive-site.xml中加入以下配置:
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>数据库用户名</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>数据库密码</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value> jdbc:mysql://主机名或ip:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>system:java.io.tmpdir</name>
<value>/home/briup/hive/iotmp</value>(注意,这个目录要真实存在,可以自己建一个,然后指定)
</property>
<property>
<name>system:user.name</name>
<value>用户名</value>
</property>
最后一步:启动hive
cd ~/Bigdata/hive
bin/hive
三、常见错误
1.failed on connection:拒绝连接
数据库远程连接出问题,可能是没授权。
如果授权没出错,那么就可能是你的hadoop集群没有打开(2333....)。
2.Relative path in absolute URI:${system:java.io.tmpdir%7D/$%7Bsystem:user.name%}
这个问题说明hive-site.xml中没有配置system:java.io.tmpdir及system:user.name,或者配置的路径不存在或不是绝对地址。
3.HiveMetaException(这是我修改hive版本时遇到的问题)
mysql连接metastore使用的user用户为hive,可能元数据删除不干净或者有某些配置文件无法删除掉
【解决办法】
(1)将原先的数据库删除或者换一个数据库(换数据库就是把javax.jdo.option.ConnectionURL配置中的数据库名改掉,然后格式化)
(2)在mysql中新建一个user,使用新的user
create user '用户名'@'%' identified by '密码';
grant all on *.* to '用户名'@localhost identified by '密码';
flush privileges
注意要重启数据库
然后将hive-site.xml中的ConnectionUserName以及ConnectionPassword改成新的用户名和密码