前言
hive和mysql一样,只需在一台机子上安装即可,它本身不是分布式软件,却具有分布式功能。另外,由于选择的是远程模式,所以metastore需要单独配置和单独启动。
一、安装Hive
1、解压hive安装包
步骤:
1)进入安装包路径,上传hive安装包,我这里是/export/servers
cd /export/servers
rz #上传安装包,没有请先自行下载
我上传的是apache-hive-3.1.2-bin.tar.gz版本
2)解压
#以具体上传的hive版本号为准
tar zxvf apache-hive-3.1.2-bin.tar.gz
执行效果
3)解决Hive与Hadoop之间guava版本差异
原因:有一个名叫guava的包,它在hadoop和hive中都存在,但是两者的版本存在差异,通常保留高版本的guavar包。
步骤:
1. 查询hive的guavar版本;
2. 查询hadoop自带的guavar版本;
3. 比较两者高低,卸载其中一中,复制另外一个;
参考指令:
#查询hive的guava版本
cd /export/servers/apache-hive-3.1.2-bin/lib/
ll |grep guava #我这里的是guava-19.0.jar
#查询hadoop的guava版本
cd /export/servers/hadoop-3.3.0/share/hadoop/common/lib/
ll |grep guava #我这里是guava-27.0-jre.jar
#卸载
rm -rf /export/servers/apache-hive-3.1.2-bin/guava-19.0.jar
#复制
cp guava-27.0-jre.jar /export/servers/apache-hive-3.1.2-bin/lib/
2、修改配置文件
hive要修改的配置文件主要就两个:hive-env.sh 和 hive-site.xml
1)hive-env.sh
cd /export/servers/apache-hive-3.1.2-bin/conf
#备份文件,以免配置出错导致没有模板参考
cp hive-env.sh.template hive-env.sh
vi hive-env.sh
#追加以下内容到文件中
export HADOOP_HOME=/export/servers/hadoop-3.3.0
export HIVE_CONF_DIR=/export/servers/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/servers/apache-hive-3.1.2-bin/lib
补充:
- 第一行是hadoop的安装路径;
- 第二行是hive安装路径下的conf ;
- 第三行是hive安装路径下的lib;
2)hive-site.xml
这个文件是没有的,需要新建。
vi hive-site.xml
将以下内容追加到文件即可
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 远程模式部署metastore metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
注意:这里涉及到mysql的用户名和密码,如果你的密码发生过修改,记得更新参数的value。我这里javax.jdo.option.ConnectionPassword
参数的值是123456
。
3、上传mysql驱动到hive安装包lib下
cd /export/servers/apache-hive-3.1.2-bin/lib
rz
我这里是mysql-connector-java-5.1.32.jar
4、初始化元数据
cd /export/servers/apache-hive-3.1.2-bin/
bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表
执行成功效果
二、创建hdfs的hive存储目录
这一步是选做,没有的话可以创建,当然系统也会自动创建。建议没有还是创建一下好。
#启动集群
start-all.sh
#查询有无目录
hadoop fs -ls /
#创建(选做)
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse