本文环境:
Hadoop 3.2.2
JDK 1.8.0_291
MySQL 5.7.35
Hive 3.1.2
Hadoop集群部署参考这篇文章:《Hadoop完全分布式集群搭建详细图文教程》
MySQL5.7安装参考这篇文章:《通过yum方式安装MySQL5.7》
MySQL8.0安装参考这篇文章:《通过yum方式安装MySQL8.0》
/opt/module
目录下[sumu@node101 software]$ tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
[sumu@node101 software]$ cd /opt/module/
[sumu@node101 module]$ mv apache-hive-3.1.2-bin hive-3.1.2
[sumu@node101 ~]$ sudo vim /etc/profile.d/dev_env.sh
添加如下内容,注意hive安装路径
# HIVE_HOME
export HIVE_HOME=/opt/module/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin
[sumu@node101 ~]$ source /etc/profile
lib
目录中/opt/software
目录中/opt/module/hive-3.1.2/lib
目录中[sumu@node101 ~]$ cp /opt/software/mysql-connector-java-5.1.47.jar /opt/module/hive-3.1.2/lib/
Hadoop
与Hive
之间guava版本差异问题guava-19.0.jar
[sumu@node101 ~]$ rm -rf /opt/module/hive-3.1.2/lib/guava-19.0.jar
guava-27.0-jre.jar
复制到Hive的lib目录下[sumu@node101 ~]$ cp /opt/module/hadoop-3.2.2/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive-3.1.2/lib/
hive-env.sh
# 进到Hive的conf目录
[sumu@node101 ~]$ cd /opt/module/hive-3.1.2/conf/
# 重命名hive-env.sh.template文件
[sumu@node101 conf]$ mv hive-env.sh.template hive-env.sh
# 修改hive-env.sh文件
[sumu@node101 conf]$ vim hive-env.sh
取消以下变量的注释,并修改为对应的值
HADOOP_HOME=/opt/module/hadoop-3.2.2
export HIVE_CONF_DIR=/opt/module/hive-3.1.2/conf
export HIVE_AUX_JARS_PATH=/opt/module/hive-3.1.2/lib
conf
目录下添加hive-site.xml
配置文件[sumu@node101 conf]$ vim hive-site.xml
注意修改连接驱动名
、主机名
和密码
等配置信息
<configuration>
<property>
<name>javax.jdo.option.ConnectionURLname>
<value> jdbc:mysql://node101:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8value>
property>
<property>
<name>javax.jdo.option.ConnectionDriverNamename>
<value>com.mysql.jdbc.Drivervalue>
property>
<property>
<name>javax.jdo.option.ConnectionUserNamename>
<value>rootvalue>
property>
<property>
<name>javax.jdo.option.ConnectionPasswordname>
<value>!QAZ2wsxvalue>
property>
<property>
<name>hive.server2.thrift.bind.hostname>
<value>node101value>
property>
<property>
<name>hive.metastore.urisname>
<value>thrift://node101:9083value>
property>
<property>
<name>hive.metastore.event.db.notification.api.authname>
<value>falsevalue>
property>
<property>
<name>hive.metastore.schema.verificationname>
<value>falsevalue>
property>
configuration>
metadata
[sumu@node101 ~]$ cd /opt/module/hive-3.1.2/bin
[sumu@node101 bin]$ ./schematool -initSchema -dbType mysql -verbos
初始化成功之后,会在MySQL的hive数据库中创建74张表
注意:启动Hive之前请确保Hadoop集群以及存放hive元数据的MySQL已经启动
由于已经将Hive添加至系统环境变量中,所以可以直接使用hive命令,若未添加系统环境变量,请到hive启动脚本路径下启动或指定到hive脚本所在路径(如:/opt/module/hive-3.1.2/bin/hive --service metastore)
[sumu@node101 ~]$ nohup hive --service metastore &
[sumu@node101 ~]$ cat nohup.out
关闭MetaStore:使用jps
命令查看RunJar
的进程号,然后使用 kill -9 进程号
将进程杀掉
[sumu@node101 ~]$ hive --service metastore
[sumu@node101 ~]$ hive --service metastore --hiveconf hive.root.logger=DEBUG,console
关系梳理:
HiveServer2是通过Metastore服务读写元数据的,所以在远程模式下,启动HiveServer2之前必须先启动Metastore服务。
注意:远程模式下,Beeline客户端只能通过HiveServer2服务访问Hive,而bin/hive是通过Metastore服务访问的。
本教程为远程模式,所以启动Hive前必须先启动Metastore
[sumu@node101 ~]$ hive
/opt/software
目录/opt/module
目录,并重命名# 解压
[sumu@node102 software]$ tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
# 重命名
[sumu@node102 module]$ mv apache-hive-3.1.2-bin hive-3.1.2
[sumu@node102 module]$ sudo vim /etc/profile.d/dev_env.sh
[sumu@node102 module]$ source /etc/profile
Hadoop
与Hive
之间guava版本差异问题(参考步骤三
中的第5步)hive-env.sh
(参考步骤三
中的第6步)conf
目录下添加hive-site.xml
配置文件[sumu@node102 conf]$ vim hive-site.xml
添加如下配置:
<configuration>
<property>
<name>hive.metastore.urisname>
<value>thrift://node101:9083value>
property>
configuration>
[sumu@node102 ~]$ hive
beeline客户端是通过HiveServer2去访问Metastore的,所以在启动beeline客户端之前,必须在安装Hive的服务器先启动Metastore,然后启动HiveServer2,最后在启动Beeline CLI
# 1、后台挂起启动Metastore
[sumu@node101 ~]$ nohup hive --service metastore &
# 2、后台挂起启动Hiveserver2
[sumu@node101 ~]$ nohup hive --service hiveserver2 &
[sumu@node102 ~]$ beeline
beeline> !connect jdbc:hive2://node101:10000
若系统当前登录的用户没有HDFS的读写权限,则会报如下 不允许xxx模拟根目录
的错误
解决方法参考这篇文章:《Beeline连接报错:Could not open client transport with JDBC Uri: …》
配置好超级代理之后记得将core-site.xml
配置文件分发至集群各个节点,并重启Hadoop,然后就可以使用beeline连接Hive了。