Hive学习之hive安装配置( Ubuntu20.04 ARM 64 )心得

本文介绍如何在Mac环境下使用Parallels Desktop for Mac 17和Ubuntu 20.04虚拟机安装和配置Hive。主要内容包括Hive的安装步骤、元数据库配置、常见错误处理及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

电脑以及使用软件:

	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.youkuaiyun.com/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.youkuaiyun.com/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的安装就已经完成了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顺其自然的济帅哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值