一 Hive的下载
软件下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/ 这里下载的版本是:apache-hive-2.3.3-bin.tar.gz
官方安装配置文档:https://cwiki.apache.org/confluence/display/Hive/GettingStarted
二 Hive单用户安装
远程Metastore数据库
1 解压配置环境变量
#解压指定位置安装 [admin@node21 software]$ tar zxvf apache-hive-2.3.3-bin.tar.gz -C /opt/module/ [admin@node21 module]$ mv apache-hive-2.3.3-bin hive-2.3.3 #配置环境变量 [admin@node21 hive-2.3.3]$ sudo vi /etc/profile 末尾追加 export HIVE_HOME=/opt/module/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
[admin@node21 conf]$ cd /opt/module/hive-2.3.3/conf [admin@node21 conf]$ cp hive-env.sh.template hive-env.sh [admin@node21 conf]$ vi hive-env.sh # HADOOP_HOME=${bin}/../../hadoop 打开注释修改 HADOOP_HOME=/opt/module/hadoop-2.7.6 # export HIVE_CONF_DIR= 打开注释修改 HIVE_CONF_DIR=/opt/module/hive-2.3.3/conf
2.2 修改hive-log4j.properties
修改hive的log存放日志到/opt/module/hive-2.3.3/logs
[admin@node21 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 = /opt/module/hive-2.3.3/logs
3 配置MySQL作为Metastore
默认情况下, Hive的元数据保存在了内嵌的 derby 数据库里, 但一般情况下生产环境使用 MySQL 来存放 Hive 元数据。
3.1 安装mysql
参考地址: https://www.cnblogs.com/frankdeng/p/9017384.html
安装mysql,拷贝 mysql-connector-java-5.1.9-bin.jar 放入 $HIVE_HOME/lib 下。
[admin@node21 software]$ cp mysql-connector-java-5.1.9.jar /opt/module/hive-2.3.3/lib/
3.2 修改配置文件
参数配置文档:https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin
复制hive-default.xml.template为hive-site.xml 文件,删除掉configuration里的配置信息,重新配置 MySQL 数据库连接信息。
[admin@node21 conf]$ vi hive-site.xml
删除命令:光标在configuration的下一行,输入:.,$-1d (光标所在行到 倒数第二行)回车,进行如下编辑
<?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://node21/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; mysql> quit;
4 运行Hive
4.1 初始化数据库
从Hive 2.1开始,我们需要运行下面的schematool命令作为初始化步骤。例如,这里使用“mysql”作为db类型。