前言
在上篇《Spark集群搭建超详细教程》提到了Hive
安装,那么今天就带领大家进行Hive
的安装,闲言少叙,撸起袖子加油干!
初始准备
还是需要准备3台虚拟机,并且还需要做如下准备工作:
- 需要安装好
java
运行环境JDK
- 需要搭建配置好
Hadoop
集群并启动,如果有不熟悉Hadoop
集群搭建的朋友,可以参考我的另一篇文章《Hadoop集群搭建配置教程》 - 在
hadoop1
这个虚拟机节点上安装MySQL
服务,可以参考《Ubuntu18.04 MySQL5.7 安装步骤详解》
安装Hive的具体步骤
1、下载hive安装包
cd /opt/module
# 下载hive安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
2、解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive
3、添加Hive核心配置,选择远程MySQL模式
cd /opt/module/hive/conf
vim hive-site.xml
添加如下内容:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop1:3306/hivedb?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- 修改为你自己的Mysql账号 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- 修改为你自己的Mysql密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- 忽略HIVE 元数据库版本的校验,如果非要校验就得进入MYSQL升级版本 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- hiveserver2 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop1</value>
</property>
4、下载连接MySQL的驱动包到hive的lib目录下
cd /opt/module
# 下载MySQL驱动包
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar
5、在MySQL上创建Hive的元数据存储库
create database hivedb;
6、执行Hive的初始化工作
cd /opt/module/hive/bin
./schematool -initSchema -dbType mysql
7、验证初始化是否成功
初始化完成后,在MySQL
的hivedb
数据库中查看是否初始化成功:
# 若展示多个数据表,即代表初始化成功
show tables;
8、使用hive
# 启动hive
cd /opt/module/hive/bin
./hive
# 启动后
# 建表
create table student(id int, name string);
# 插入数据
insert into table student(1, 'abc');
# 插入成功后,查询
select * from student;
9、使用beeline
首先启动hiveserver2
服务:
nohup ./bin/hiveserver2>> hiveserver2.log 2>&1 &
hiveserver2
服务启动后,使用beeline
客户端访问hiveserver2
服务:
cd /opt/module/hive
# 进入beeline客户端
bin/beeline
# 执行连接hiveserver2操作
beeline> !connect jdbc:hive2://hadoop1:10000/default
# 或者
bin/beeline -u jdbc:hive2://hadoop1:10000/default -n root
注意:
hive
的默认引擎为MR
!!!
至此,我们就完成了Hive
的安装。
安装过程中,我们可能会遇到以下问题:
-
问题 1:
com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)
错误原因:系统找不到这个类所在的jar
包或者jar
包的版本不一样系统不知道使用哪个。hive
启动报错的原因是后者。 解决办法: 1)com.google.common.base.Preconditions.checkArgument
这个类所在的jar包为:guava.jar
2)hadoop-3.1.3
(路径:hadoop/share/hadoop/common/lib
)中该jar
包为guava-27.0-jre.jar
;而hive-3.1.2(
路径:hive/lib
)中该jar
包为guava-19.0.jar
3)将jar包变成一致的版本:删除hive
中低版本jar包,将hadoop
中高版本的复制到hive
的lib
中。 再次启动问题得到解决! -
问题2:
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop1:10000/default: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous (state=08S01,code=0)
解决办法: 1)修改
hadoop
配置文件/opt/module/hadoop/etc/hadoop/core-site.xml
添加如下内容:<property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property>
然后将
core-site.xml
分发到集群的其他节点。2)重启
hadoop
集群 -
问题3:用
beeline
操作hive
时,如何关闭打印的info
日志信息? 解决办法: 1)在使用beeline
时加入以下设置即可--hiveconf hive.server2.logging.operation.level=NONE
2)在
hive-site.xml
中修改如下配置也可以禁用在beeline
中显示额外信息<property> <name>hive.server2.logging.operation.level</name> <value>NONE</value> <description> Expects one of [none, execution, performance, verbose]. HS2 operation logging mode available to clients to be set at session level. For this to work, hive.server2.logging.operation.enabled should be set to true. NONE: Ignore any logging EXECUTION: Log completion of tasks PERFORMANCE: Execution + Performance logs VERBOSE: All logs </description> </property>
--------------------- end ------------------------
微信公众号:扫描下方二维码
或 搜索 笑看风云路
关注