1.前言
说明:安装hive前提是要先安装hadoop集群,并且hive只需要再hadoop的namenode节点集群里安装即可(需要再所有namenode上安装),可以不在datanode节点的机器上安装。另外还需要说明的是,虽然修改配置文件并不需要你已经把hadoop跑起来,但是本文中用到了hadoop命令,在执行这些命令前你必须确保hadoop是在正常跑着的,而且启动hive的前提也是需要hadoop在正常跑着,所以建议你先将hadoop跑起来在按照本文操作。有关如何安装和启动hadoop集群,请参考:
2.下载Hive 2.x.x
本文使用的是基于Hive 2.3.3版本
(1)下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.3/apache-hive-2.3.3-bin.tar.gz
(2)下载命令:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.3/apache-hive-2.3.3-bin.tar.gz
(3)解压到指定安装目录:
tar -zxvf apache-hive-2.3.3-bin.tar.gz
mv apache-hive-2.3.0-bin /usr/local/hive-2.3.3
cd /usr/local/hive -2.3.3
(4)修改环境变量:
vi /etc/profile
插入
export HIVE_HOME=/usr/local/hive-2.3.3
export PATH=$HIVE_HOME/bin:$PATH
使环境变量立即生效
source /etc/profile
3.安装MYSQL
Hive的元数据和数据是分开存放的,数据存在在HDFS上,而元数据默认是存储在Hive自带的Derby数据库,但是由于Derby只支持同时一个用户访问Hive,所以不推荐使用。推荐使用Mysql作为Hive的元数据库。
(1)安装MYSQL客户端
yum install mysql
(2)安装MYSQL服务器端
yum install mysql-server
yum install mysql-devel
注意:有时候会提示找不到yum源。此时参考这篇博文即可。
(3)相关mysql操作
.查看状态: service mysqld status
.启动: service mysqld start
.终止: service mysqld stop
.初始化mysql环境:mysql -u root
.查看mysql用户: select user,host,password from mysql.user;
.修改root密码(我也修改为了123456):
set password for root@localhost=password('123456');
set password for root@127.0.0.1=password('123456');
.退出后登录root用户输入密码验证:mysql -u root -p
(4)登录mysql数据库,并创建metastore数据库,关闭新主库的只读属性,为其授权(用于存储hive的初始化配置)
在mysql的命令行交互页面分别输入下面的语句:
create database metastore;
set global read_only=0;
grant all on metastore.* to hive@'%' identified by 'hive';
grant all on metastore.* to hive@'localhost' identified by 'hive';
flush privileges;
(5)下载jdbc connector
点击链接Connector/J 5.1.xx下载至本地主机,解压,把解压目录下的mysql-connector-java-5.1.xx-bin.jar包,拷贝到/usr/local/hive-2.3.3/lib目录下
/usr/local/hive-2.3.3/lib
4.配置Hive
(1)进入配置文件的文件夹
cd /usr/local/hive-2.3.3/conf
(2)复制初始化文件并重命名
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
(3)修改hive-env.sh文件 ,在最下面添加如下的配置
export JAVA_HOME=/usr/local/java/jdk1.8.0_141 ##Java路径,根据自己jdk安装的路径配置
export HADOOP_HOME=/usr/local/hadoop ##Hadoop安装路径
export HIVE_HOME=/usr/local/hive-2.3.3 ##Hive安装路径
export HIVE_CONF_DIR=/usr/local/hive/conf ##Hive配置文件路径
(4)在hdfs中创建一下目录,并授权,用于存储文件
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /user/hive/tmp
hdfs dfs -mkdir -p /user/hive/log
hdfs dfs -chmod -R 777 /user/hive/warehouse
hdfs dfs -chmod -R 777 /user/hive/tmp
hdfs dfs -chmod -R 777 /user/hive/log
注意:直接运行上述命令即可,如果需要继续了解有关hdfs的命令使用情况,请移步此博文
(5)修改hive-site.xml
- 在合适的位置添加如下的配置,对应于上面用hdfs创建的文件夹
<property> <name>hive.exec.scratchdir</name> <value>/user/hive/tmp</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>hive.querylog.location</name> <value>/user/hive/log</value> </property>
- 修改hive-site.xml中的临时目录
新建一个hive的临时文件夹tmp,我这里的位置是在/home/hadoop/hive-2.3.3/tmp(在哪里都无所谓,记住这地址即可) - 将hive-site.xml文件中的${system:java.io.tmpdir}替换为hive的临时目录(就是第一步里的/home/hadoop/hive-2.3.3/tmp)
注意:里面有好几处这样的地方,建议把hive-site.xml下载到本地用本地编辑器全部一次性替换 - 将配置文件hive-site.xml中${system:user.name}都替换为{user.name}
注意:里面有好几处这样的地方,建议把hive-site.xml下载到本地用本地编辑器全部一次性替换 - 搜索定位到 <name>javax.jdo.option.ConnectionDriverName</name> ,将该name对应的value修改为MySQL驱动类路径:
<property <name>javax.jdo.option.ConnectionDriverName</name <value>com.mysql.jdbc.Driver</value> </property>
- 搜索定位到 <name> javax.jdo.option.ConnectionURL</name> ,将该name对应的value修改为MySQL的地址:
<property <name>javax.jdo.option.ConnectionDriverName</name <value>com.mysql.jdbc.Driver</value> </property>
- 搜索定位到 <name> javax.jdo.option.ConnectionUserName</name> ,将该name对应的value修改为MySQL数据库登录名:
<property <name>javax.jdo.option.ConnectionDriverName</name <value>com.mysql.jdbc.Driver</value> </property>
- 搜索定位到 <name>javax.jdo.option.ConnectionPassword</name> ,将该name对应的value修改为MySQL数据库的登录密码:
<property <name>javax.jdo.option.ConnectionDriverName</name <value>com.mysql.jdbc.Driver</value> </property>
5.启动Hive
cd $HIVE_HOME/bin #进入Hive的bin目录
./hive #执行hive启动