红联Linux门户
Linux帮助

Ubuntu下安装hive,并配置mysql作为元数据库

发布时间:2016-10-14 15:15:08来源:linux网站作者:victoria_xueqian
一、安装hive
1.下载并解压hive源程序
sudo tar -zxvf ./apache-hive-1.2.1-bin.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv apache-hive-1.2.1-bin hive # 将文件夹名改为hive
sudo chown -R dblab:dblab hive # 修改文件权限
mkdir -p /usr/local/hive/warehouse # 创建元数据存储文件夹
sudo chmod a+rwx /usr/local/hive/warehouse
 
2.配置环境变量
为了方便使用,我们把hive命令加入到环境变量中去,编辑~/.bashrc文件vim ~/.bashrc,在最前面一行添加:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
保存退出后,运行source ~/.bashrc使配置立即生效。
 
3.启动hive
hive //启动hive
Ubuntu下安装hive,并配置mysql作为元数据库
注意:到这里,我们其实已经安装好了hive,但是是默认的derby作为元数据库,这会带来麻烦,后面会提到。
 
4.修改/usr/local/hive/conf下的hive-site.xml
这个文件是不存在的,只需将hive-default.xml.template保留一个副本,副本重命名为hive-site.xml,源文件可以重命名为hive-default.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</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>
 
二、安装mysql
1.Ubuntu下 MySQL的安装请参考:Ubuntu安装MySQL及遇到的问题解决方案
使用以下命令即可进行MySQL安装:
sudo apt-get install mysql-server
上述命令会安装以下包:
apparmor
mysql-client-5.7
mysql-common
mysql-server
mysql-server-5.7
mysql-server-core-5.7
因此无需再安装mysql-client等。安装过程会提示设置mysql root用户的密码,设置完成后等待自动安装即可。默认安装完成就启动了mysql。
启动和关闭mysql服务器:
service mysql start
service mysql stop
Ubuntu下安装hive,并配置mysql作为元数据库
确认是否启动成功:sudo netstat -tap | grep mysql
Ubuntu下安装hive,并配置mysql作为元数据库
进入mysql shell界面:mysql -u root -p
Ubuntu下安装hive,并配置mysql作为元数据库
下面回顾一下安装过程中我遇到的问题:
1]、安装到Renaming removed key_buffer and myisam-recover options (if present)就卡住了,而且ctrl+C 也无法退出,最后我关闭了终端强制退出了,但是我发现运用sudo netstat -tap | grep mysql 居然显示是启动成功的,可是进入shell界面就会出现问题,提示ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:YES)网上找了一堆方法,都无法解决。
无奈考虑卸载重装:
sudo apt-get autoremove mysql* --purge
sudo apt-get remove apparmor //这个apparmor是在装mysql-server时装上的,和安全有关
2]、重启电脑后(很多时候重启是法宝),再次利用命令apt-get安装mysql-server,运行到Renaming removed key_buffer and myisam-recover options (if present)仍然卡住了,我再次中止了终端,发现启动也是成功的,尝试进入shell界面,出现另一种新的错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2),然后又是找了很多国内外资料,国内百度无法搜索出和这个错误完全相关的,还是老实翻墙上谷歌,提出的方案是需要删除一些重复的配置文件,但是我连这个/var/run/mysqld/mysqld.sock没有,因此仍然无法解决。
再次卸载。考虑一定要卸载非常彻底。
sudo apt-get autoremove mysql* --purge
sudo apt-get remove apparmor
sudo rm /var/lib/mysql/ -R //非常重要
sudo rm /etc/mysql/ -R //非常重要
3]、重启电脑,再次利用命令sudo apt-get install mysql-server 顺利安装成功!
总结:一定要卸载非常干净!
 
2.下载mysql jdbc 包,下载地址:mysql-connector-java-x.x.x-bin.jar(http://www.mysql.com/downloads/connector/j/)
tar -zxvf mysql-connector-Java-5.1.40.tar.gz //解压
cp mysql-connector-java-5.1.40/mysql-connector-java-5.0.8-bin.jar /usr/local/hive/lib //将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下:
 
3.启动并登陆mysql shell
service mysql start //启动mysql服务
mysql -u root -p //登陆shell界面
 
4.新建hive数据库。用来保存hive的元数据:create database hive;这个hive数据库与localhost:3306/hive中的hive对应
 
5.配置mysql允许hive接入:
grant all on hive.* to hive@localhost identified by 'hive'//后面的hive是配置hive-site.xml中配置的连接密码
flush privileges //刷新mysql系统权限关系表
 
6.启动hive
hive //启动hive
Ubuntu下安装hive,并配置mysql作为元数据库
使用默认的derby作为元数据库,带来的麻烦。
 
很多初学者安装hive使用的是默认元数据库derby,这里面容易遇到下面问题:
安装好了hive 环境,建表后关闭连接窗口,再重新进表就不见了,这是哪里配置的不对?
1.命令行键入hive后创建表
2.在show tables; 显示表列表,上面显示刚才创建的表
3.把窗口关闭,再重新开个窗口连接服务器,键入hive ,然后show tables,表看不到了。
为什么会找不到创建的表,这个并没有消失,而是你的位置不对。
A.如果我们在/home下面进入hive,那么我们的metastore_db,就会产生在home目录下。
B.如果我们在/usr目录下进入hive,那么我们的metastore_db,就会产生在usr目录下。
所以如果你更换了目录启动hive,那么之前的创建的表你是找不到的。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25041.html