1.下载安装文件
通过下面的命令来下载Hive安装文件apache-hive-3.1.2-bin.tar.gz。
cd ~
wget http://10.51.46.104:32600/allfiles/hadoop3.0_examples/apache-hive-3.1.2-bin.tar.gz
下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的默认规范,用户安装的软件一般都是存放在“/usr/local/”目录下。请在Linux系统中打开一个终端,执行如下命令(Hadoop的密码为:hadoop):
sudo tar -zxvf ~/apache-hive-3.1.2-bin.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive # 将文件夹名改为hive
sudo chown -R hadoop ./hive # 修改文件权限
2.配置环境变量
为了方便使用,可以把hive命令加入到环境变量PATH中,从而可以在任意目录下直接使用hive命令启动,请使用vim编辑器打开“~/.bashrc”文件进行编辑,命令如下:
vim ~/.bashrc
在该文件的最前面一行添加如下内容:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
保存该文件并退出vim编辑器,然后,运行如下命令使得配置立即生效:
source ~/.bashrc
3.修改配置文件
将“/usr/local/hive/conf”目录下的hive-default.xml.template文件重命名为hive-default.xml,命令如下:
cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml
同时,使用vim编辑器新建一个文件hive-site.xml,命令如下:
cd /usr/local/hive/conf
vim hive-site.xml
在hive-site.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>
4.安装并配置MySQL
这里采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据,因此,需要安装MySQL数据库。
(1)安装MySQL
安装命令如下:
sudo apt-get update
sudo apt-get install mysql-server
设置MySQL的root用户密码,输入hadoop,然后按回车继续安装。
再次输入MySQL的root用户密码:hadoop,然后按回车继续安装。
(2)下载MySQL JDBC驱动程序
为了让Hive能够连接到MySQL数据库,需要下载MySQL JDBC驱动程序。
下载命令如下:
cd ~
wget http://10.51.46.104:32600/allfiles/hadoop3.0_examples/mysql-connector-java-5.1.40.tar.gz
执行如下命令解压缩文件:
cd ~
tar -zxvf mysql-connector-java-5.1.40.tar.gz #解压
#下面将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下
cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib
(3)启动MySQL
执行如下命令启动MySQL,并进入“mysql>”命令提示符状态:
sudo service mysql start #启动MySQL服务
mysql -u root -p #登录MySQL数据库
系统会提示输入root用户的密码,安装MySQL数据库时,把MySQL的root用户密码设置为hadoop,因此,这里可以输入hadoop。
(4)在MySQL中为Hive新建数据库
现在,需要在MySQL数据库中新建一个名称为hive的数据库,用来保存Hive的元数据。MySQL中的这个hive数据库,是与Hive的配置文件hive-site.xml中的“mysql://localhost:3306/hive”对应起来的,用来保存Hive元数据。在MySQL数据库中新建hive数据库的命令,需要在“mysql>”命令提示符下执行,具体如下:
create database hive;
(5)配置MySQL允许Hive接入
需要对MySQL进行权限配置,允许Hive连接到MySQL。
grant all on *.* to hive@localhost identified by 'hive';
flush privileges;
上面的第1行命令,将MySQL的所有数据库的所有表的所有权限赋给hive用户,后面的hive是在配置文件hive-site.xml中事先设置的连接密码。第2行命令,用来刷新MySQL系统权限关系表。
(6)启动Hive
Hive是基于Hadoop的数据仓库,会把用户输入的查询语句自动转换成为MapReduce任务来执行,并把结果返回给用户。因此,启动Hive之前,需要先启动Hadoop集群,命令如下:
cd /usr/local/hadoop
./sbin/start-dfs.sh
然后,再执行如下命令启动Hive:
cd /usr/local/hive
./bin/hive
实际上,由于之前已经配置了环境变量PATH,因此,也可以直接使用如下命令启动hive:
hive
在启动Hive时,有可能会出现“Hive metastore database is not initialized”的错误。
出现这个错误的原因是,以前曾经安装了Hive或MySQL,重新安装Hive和MySQL以后,导致版本、配置不一致。解决方法是,使用schematool工具。Hive现在包含一个用于Hive Metastore 架构操控的脱机工具——schematool。此工具可用于初始化当前Hive版本的Metastore架构。此外,它还可处理从较旧版本到新版本的架构升级。所以,为了解决上述错误,可以在终端中执行如下命令(注意,不是在“mysql>”命令提示下执行):
schematool -dbType mysql –initSchema
是因为Hive内依赖的guava.jar和Hadoop内的版本不一致造成的。解决方法是,查看Hadoop安装目录下“share/hadoop/common/lib”内guava.jar版本,再查看Hive安装目录下的lib目录内guava.jar的版本,如果两者不一致,删除版本低的,并拷贝高版本的。
如上图,删除Hive安装目录下的lib目录内的guava-19.0.jar,并将Hadoop安装目录下的guava-27.0-jre.jar拷贝至Hive安装目录下的lib目录内。
再启动Hive时,如果遇到如下错误:
解决该错误的方法是执行如下命令:
cd /usr/local/hive
./bin/schematool -dbType mysql -initSchema
然后,再执行如下命令启动Hive:
cd /usr/local/hive
./bin/hive
即可成功启动hive。