最近需要安装webank开源的DataSphere Studio(https://github.com/WeBankFinTech/DataSphereStudio-Doc/blob/main/zh_CN/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/DSS%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.md),发现里面需要 Hive(2.3.3,Hive其他版本需自行编译Linkis),为了方便,就安装2.3.3版本的Hive,记录一下。
Hive2.3.3的安装
下载地址:
http://archive.apache.org/dist/hive/hive-2.3.3/
1 解压配置环境变量
#配置环境变量
[admin@node21 hive-2.3.3]$ sudo vi /etc/profile
末尾追加
export HIVE_HOME=/home/programs/hive-2.3.3
export PATH=$PATH:$HIVE_HOME/bin
重新编译环境变量生效
[admin@node21 hive-2.3.3]$ source /etc/profile
2 配置Hive文件
2.1 修改hive-env.sh
[root@server14 conf]# cp hive-env.sh.template hive-env.sh
# HADOOP_HOME=${bin}/../../hadoop
打开注释修改 HADOOP_HOME=/home/programs/hadoop-2.7.2
# export HIVE_CONF_DIR=
打开注释修改 HIVE_CONF_DIR=/home/programs/hive-2.3.3/conf
2.2 修改hive-log4j.properties
修改hive的log存放日志到/opt/module/hive-2.3.3/logs
[root@server14 conf]# mv hive-log4j2.properties.template hive-log4j2.properties
[admin@node21 conf]$ vi hive-log4j2.properties
找到 property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}
修改 property.hive.log.dir = /home/programs/hive-2.3.3/logs
3 配置MySQL作为Metastore
默认情况下, Hive的元数据保存在了内嵌的 derby 数据库里, 但一般情况下生产环境使用 MySQL 来存放 Hive 元数据。
安装mysql,拷贝 mysql-connector-java-5.1.47.jar 放入 $HIVE_HOME/lib 下。
3.2 修改配置文件
参数配置文档:https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin
复制hive-default.xml.template为hive-site.xml 文件,删除掉configuration里的配置信息,重新配置 MySQL 数据库连接信息。
[root@server14 conf]# cp hive-default.xml.template hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--Hive作业的HDFS根目录位置 -->
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value>
</property>
<!--Hive作业的HDFS根目录创建写权限 -->
<property>
<name>hive.scratch.dir.permission</name>
<value>733</value>
</property>
<!--hdfs上hive元数据存放位置 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!--连接数据库地址,名称 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.100.10:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--连接数据库驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--连接数据库用户名称 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<!--连接数据库用户密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<!--客户端显示当前查询表的头信息 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!--客户端显示当前数据库名称信息 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
3.3 mysql创建hive用户密码
mysql> CREATE DATABASE hive;
mysql> USE hive;
mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';
mysql> GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
mysql> GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
mysql> FLUSH PRIVILEGES;
4.1 初始化数据库
从Hive 2.1开始,我们需要运行下面的schematool命令作为初始化步骤。例如,这里使用“mysql”作为db类型。
[root@server14 conf]# schematool -dbType mysql -initSchema
执行成功后,可以使用Navicat Premium 查看元数据库 hive 是否已经创建成功。
4.2 启动 Hive 客户端
启动Hadoop服务,使用 Hive CLI(Hive command line interface), **hive --service cli和hive效果一样,**可以在终端输入以下命令
[root@server14 conf]# hive