一、环境
操作系统:CentOS6.9
软件版本:Hive2.3.4
二、安装MySQL
hive的数据存储:
首先弄清楚什么是元数据和表数据:元数据就是表的属性数据,表的名字,列信息,分区等标的属性信息,它是存放在RMDBS传统数据库中的(如mysql)。表数据就是表中成千上万条数据了。
hive的存储过程:启动hive时,会初始化hive,这时会在mysql中生成大约36张表(后续随着业务的复杂会增加),然后创建表,会在mysql中存放这个表的信息(不是以表的形式存在的,而是把表的属性以数据的形式放在mysql中,这样在hive中使用sql命令一样是能够查到这张表的)。然后把本地的文本文件使用hive命令格式化导入到表中,这样这些数据就存放到hdfs中,而不是在mysql或hive中。
我这里是使用MySQL存储Hive的元数据,所以要先安装MySQL。可参考以下方法:
在CentOS6.9安装MySQL5.7:https://blog.csdn.net/andyguan01_2/article/details/88027338
修改mysql参数(我这里是用mysql的root用户来登录Hive元数据库,应该也可以用其他用户):
# 进入mysql
mysql -uroot -p # 然后输入mysql的密码
# 切换成mysql库
use mysql;
# 查询用户信息
select User,Host,authentication_string from user;
# 设置远程登录权限
grant all privileges on *.* to 'root'@'%' identified by '填实际密码' with grant option;
# 授权本地客户端登录此库
grant all privileges on *.* to 'root'@'10.200.4.117' identified by '填实际密码';
# 刷新配置信息
flush privileges;
# 退出
exit
三、安装Hive
1、下载安装包
打开下载网址:
https://archive.apache.org/dist/hive/hive-2.3.4/
在以上页面找到对应文件,右键复制链接地址(https://archive.apache.org/dist/hive/hive-2.3.4/apache-hive-2.3.4-bin.tar.gz)。
以root用户登录服务器,下载安装文件:
wget https://archive.apache.org/dist/hive/hive-2.3.4/apache-hive-2.3.4-bin.tar.gz
2、解压安装文件
以root用户执行以下命令解压:
tar -zxf apache-hive-2.3.4-bin.tar.gz -C /u01/app
修改安装文件所有者:
chown -R hadoop:hadoop /u01/app/apache-hive-2.3.4-bin
以hadoop用户下载连接mysql的jar包:
cd /u01/app/apache-hive-2.3.4-bin/lib
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar
3、修改配置文件
3.1 配置/etc/profile
以root用户操作:
vi /etc/profile
增加以下内容:
export HIVE_HOME=/u01/app/apache-hive-2.3.4-bin
export PATH=$PATH:$HIVE_HOME/bin
使配置生效:
source /etc/profile
3.2 配置hive-env.sh
以hadoop用户操作。先从template文件复制,再编辑:
cp $HIVE_HOME/conf/hive-env.sh.template $HIVE_HOME/conf/hive-env.sh
vi $HIVE_HOME/conf/hive-env.sh
输入以下内容:
HADOOP_HOME=/u01/app/hadoop-2.6.5
export HIVE_CONF_DIR=/u01/app/apache-hive-2.3.4-bin/conf
3.3 配置hive-log4j2.properties
以hadoop用户操作。先从template文件复制,再编辑:
cp $HIVE_HOME/conf/hive-log4j2.properties.template $HIVE_HOME/conf/hive-log4j2.properties
vi $HIVE_HOME/conf/hive-log4j2.properties
设置:
property.hive.log.dir = /u01/app/hadoop-2.6.5/logs
3.4 配置hive-site.xml
以hadoop用户操作。先从template文件复制,再编辑:
cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml
vi $HIVE_HOME/conf/hive-site.xml
将configuration中的内容换成如下配置:
hive.metastore.warehouse.dir
/data/hive/warehouse
hive.cli.print.header
true
hive.cli.print.current.db
true
hive.exec.mode.local.auto
true
hive.metastore.uris
thrift://10.200.4.117:9083
Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.
javax.jdo.option.ConnectionURL
jdbc:mysql://10.200.4.117:3306/hive?createDatabaseIfNotExist=true&useSSL=false
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionUserName
root
username to use against metastore database
javax.jdo.option.ConnectionPassword
填mysql的root密码
password to use against metastore database
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
4、创建hive元数据所在路径
以hadoop用户操作:
hdfs dfs -mkdir /tmp #如果有这个路径,这不需要重新创建
hdfs dfs -mkdir -p /user/hive/warehouse #创建目录
hdfs dfs -chmod g+w /tmp #修改文件权限
hdfs dfs -chmod g+w /user/hive/warehouse #修改文件权限
5、初始化mysql元数据库
以hadoop用户操作:
schematool -initSchema -dbType mysql
以hadoop用户操作:
nohup hive --service metastore & #开启元数据
7、启动Hive并测试
以hadoop用户操作:
hive
show databases;
create database ssj;
create table ssj.tmp1
(name string)
row format delimited fields terminated by "\t";
select * from ssj.tmp1;