赞
踩
电脑以及使用软件:
MacBook pro(M1芯片,作为主机)
Parallels Desktop for Mac 17(虚拟机软件)
Ubuntu 20.04(虚拟机上的操作系统)
hadoop102、hadoop103、hadoop104(3台虚拟机当作三台服务器)
apache-hive-3.1.2-bin.tar (安装的hive版本)
因为hive是依托在hadoop集群上的,所以首先应该将hadoop集群搭建完成,大家可以看我之前写过的Mac上的hadoop集群搭建:
https://blog.csdn.net/ljs_0/article/details/123650978?spm=1001.2014.3001.5501
一、hive安装
1.将apache-hive-3.1.2-bin.tar 上传至 /opt/software 下
2.解压文件: tar -vxf apache-hive-3.1.2-bin.tar -C /opt/module(解压完后可以把文件名改为hive方便后续操作)
3.添加环境变量: sudo vim /etc/profile.d/my_env.sh (搭建hadoop集群时创建的配置文件)
#HIVE_HOME
HIVE_HOME=/opt/module/hive
PATH=$PATH:$HIVE_HOME/bin
4.初始化元数据库:bin/schematool -dbType derby -initSchema
5.启动hive(保证集群是启动的):进入hive目录后输入 bin/hive
启动可能会报错:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(Z Ljava/lang/String;Ljava/lang/Object;)
这是因为hive所依赖的guava包的版本和hadoop依赖的guava版本冲突了,解决方法是查看hive和hadoop下面的guava.jar那个版本高就把其复制到另一个下面将低版本的替换掉
hadoop 中是在:share/hadoop/common/lib 下面
hive 中是在:/lib 下面
6.启动的时候可能会报一些警告是因为jar包冲突,想取消的话就在hive路径下的/lib中找到 log4j-slf4j-impl-2.10.0.jar 将其后缀改为 bak 即可解决
因为hive默认元数据库derby是不支持多用户的,所以将hive的元数据库配置到Mysql
二、hive元数据库配置Mysql
1. 安装mysql
我试了许多种将安装包直接上传然后解压安装mysql都没有成功,最后是用命令来直接安装mysql成功的,大家可以根据下面这篇文章来进行mysql安装,其作者将步骤写的很详细:
https://blog.csdn.net/yorickjun/article/details/121138160
2.拷贝mysql的jdbc驱动:进入mysql官网下载mysql-connector-java-8.xx.jar
下载后将其拷贝至 hive/lib/ 下
3.配置metastore到mysql,在 hive/conf/ 文件下新建 hive-site.xml文件 并将以下配置写入:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>之前设置的mysql的密码</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- Hive元数据存储的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!-- 元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
4.进入hive目录后再次初始化hive元数据库 :schematool -initSchema -dbType mysql -verbose
初始化如果报错:fail to load driver 则是因为第二步种的jar包有错,一定检查下载的是.jar而不是.deb
5.使用元数据服务方式启动hive,在hive-site.xml文件中添加下面的信息之后启动 metastore :hive --service metastore 启动之后则将占用前端,之后的启动hive操作需要新建一个窗口进行
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop102:9083</value>
</property>
6.使用jdbc的方式访问hive,在hive-site.xml文件添加如下信息:
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop102</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
在hive路径下启动hiveserver2: bin/hive --service hiveserver2
7.在hive路径下启动beeline客户端:bin/beeline -u jdbc:hive2://hadoop102:10000 -n atguigu
在启动时可能会报错:Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000/default:
原因是hadoop不允许将实际用户直接传输到hadoop层,他是传到一个代理上,然后由代理在hadoop上执行操作,解决方法是在 hadoop-3.1.3/etc/hadoop/ 路径下的 core-site.xml 文件中配置一个代理,添加的配置信息如下:
<property>
<name>hadoop.proxyuser.用户名.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.用户名.groups</name>
<value>*</value>
</property>
至此,hive的安装就已经完成了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。