本文基于CENTOS7,在Hadoop3.4.0版本vm虚拟机3节点HA集群的基础上进行的搭建。
一、前置条件
本文使用MySQL8.0.26作为HIVE数据库,不使用hive自带的derby数据库,因为其不支持多客户端访问,也不方便查询。
所以必须先安装MySQL。版本可以自行决定,如果没有安装,请自行参考安装,也可以参考以下博文:
1、https://blog.csdn.net/estelle_belle/article/details/111156743
2、https://blog.csdn.net/u011374856/article/details/140202813
二、配置部署HIVE
本文集群三个节点分别为:master,slave1,slave2
将hive-4.0.1的tar包解压到master节点一个目录下,本文是/usr/hive-4.0.1/
1、添加hive环境变量:
vim /etc/profile
生效命令 source /etc/profile
2、解压后的HIVE的文件目录结构如下图所示:(请注意这里的log文件夹,是我自己创建,后面请注意关注这个路径)
我们的配置主要在conf文件夹中进行,conf的目录结构如图所示:
3、配置hive-env.sh
conf 文件夹中没有hive-env.sh文件,我们需要把下图所示的文件进行重命名的操作:
进入当前路径后,使用
mv hive-env.sh.template hive-env.sh
或者直接在图形界面下重命名。
编辑hive-env.sh文件:vim hive-env.sh
添加如下内容:
HADOOP_HOME=/usr/hadoop3
export HIVE_CONF_DIR=/usr/hive-4.0.1/conf
4、配置日志目录
如同上一步一样,把如图所示的日志配置文件重命名为hive-log4j2.properties
找到并修改property.hive.log.dir = /usr/hive-4.0.1/log
(改成你自己的,刚才我在上边有提到,我这里设置了自己的日志目录)
5、修改default文件,把如图所示的默认配置文件重命名为hive-default.xml
6、配置hive-site.xml文件
在你的conf文件夹内新建一个hive-site.xml文件,配置以下内容:
<configuration>
<!-- jdbc连接的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hivemeta?createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=GMT</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- jdbc连接的username 你的用户-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc连接的password 你的MYSQL密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root123</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>master</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</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>
7、添加Java访问MySQL的jar包,放到hive路径的lib文件夹下。
可以去官网上下载,但是速度比较慢,可以直接在IDEA中利用Maven下载,在pom.xml里写依赖(这里是我的MySQL的版本号,根据需求改为自己的):
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
然后去本地maven仓库mysql文件夹内
8、初始化HIVE的元数据库
schematool -initSchema -dbType mysql
直到提示初始化完成(Initialize completed)即为成功
注意:这里要确保mysql服务开启,使用命令
systemctl status mysqld
如图所示:
然后登录到mysql查看是否有hive元数据库,如图所示
注意:这里的这个元数据名称是我在第六步中配置hive-site.xml文件里指定的,名字自己指定,参考其他博客的话注意这个名称。
9、需要修改的hadoop配置:
①修改core-site.xml,添加如下配置:
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
②修改yarn-site.xml,添加如下配置:
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_HOME/etc/hadoop:$HADOOP_HOME/share/hadoop/common/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/hdfs:$HADOOP_HOME/share/hadoop/hdfs/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/yarn:$HADOOP_HOME/share/hadoop/yarn/lib/*:$HADOOP_HOME/share/hadoop/yarn/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/etc/hadoop:$HADOOP_HOME/share/hadoop/common/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/hdfs:$HADOOP_HOME/share/hadoop/hdfs/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/yarn:$HADOOP_HOME/share/hadoop/yarn/lib/*:$HADOOP_HOME/share/hadoop/yarn/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/mapreduce/*:/opt/hadoop/contrib/capacity-scheduler/*.jar:/opt/hadoop/contrib/capacity-scheduler/*.jar</value>
</property>
注意:修改配置文件后同步集群所有节点
10、将配置好的HIVE分发一份到slave1。
11、启动ZooKeeper,启动集群strat-all.sh
12、在master节点上单独开启一个终端窗口,输入命令hiveserver2,如图
注意:这个窗口不要关闭,单独开启
13、切换到slave1节点,打开终端输入beeline命令
再次输入命令:
! connect jdbc:hive2://master:10000
这里的端口号是在hive-site.xml文件里配置的端口号,有点的博客不一样,请注意。
这时候会提示输入,用户名,密码,输入完成后应该成功登录。如图所示:
14、测试(如果有出错,请查看log下的日志文件调试错误)
①输入命令,show databases;
能否显示如图所示的类似结果:
输入命令:create database hivet_test;
然后再查看数据库,看能否出现上图所示。
②输入命令:use hive_test;
再输入命令:create table mytest(id int,name string);
看能否创建表成功,然后使用 show tables; 查看
③、输入命令:insert into table mytest values(1,‘zhagnsan’);
测试是否能插入数据成功。
输入命令后查看master节点的开启hiveserver2的终端窗口,有日志输出,如图所示:
如果报错,请查看8088的MR作业日志。