bigdata_14_Hive_编译源码

1 编译环境准备

1.1 虚拟机准备

准备一台虚拟机,安装CentOS7.5系统(带图形化操作界面)

1.2 安装JDK

步骤1:卸载现有的JDK
sudo rpm -qa | grep -i java | xargs -n1 sudo rmp -e --nodeps
步骤2:上传JDK安装包,并解压到/opt/module/路径
[atguigu@hadoop100 software]tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
步骤3:配置JDK环境变量
# (1)新建/etc/profile.d/my_env.sh文件
[atguigu@hadoop100 module] sudo vim /etc/profile.d/my_env.sh
# (2)添加JDK环境变量
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
# (3)让环境变量生效
[atguigu@hadoop100 software]$ source /etc/profile.d/my_env.sh
步骤4:测试JDK是否安装成功
[atguigu@hadoop100 module]# java -version

image-20210117141901433

1.3 安装Maven

步骤1:上传maven安装包,并解压到/opt/module/路径
[atguigu@hadoop100 software]$ tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/module/
步骤2:配置Maven环境变量
# 1. 编辑/etc/profile.d/my_env.sh文件
[atguigu@hadoop100 module]$ sudo vim /etc/profile.d/my_env.sh
# 2 添加内容:
# MAVEN_HOME
export MAVEN_HOME=/opt/module/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
# 3 让环境变量生效
[atguigu@hadoop100 software]$ source /etc/profile.d/my_env.sh
步骤3:检查maven是否安装成功
[atguigu@hadoop100 module]$ mvn -version

image-20210117142258561

步骤4:配置仓库镜像

修改Maven配置文件

[codejiwei@centos1 module]$ vim /opt/module/apache-maven-3.6.3/conf/settings.xml 

在 节点中增加以下内容

   <!-- 阿里云仓库 -->
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <!-- <url>https://repo1.maven.org/maven2/</url> -->
            <url>https://maven.aliyun.com/repository/central</url>
        </mirror>

1.4 安装IDEA

步骤1:上传IDEA安装包,解压到/opt/module/路径
[atguigu@hadoop100 software]$ tar -zxvf ideaIU-2020.3.1.tar.gz -C /opt/module/
步骤2:启动IDEA(有图形化界面启动)
# 打开一个终端
[atguigu@hadoop100 ~]$ nohup /opt/module/idea-IU-203.6682.168/bin/idea.sh >/dev/null 2>&1 &
步骤3:配置Maven

image-20210117221438316

image-20210117221452226

2 编译Hive源码

在Hive官网或者Github下载所需版本源码,并将其导入IDEA。

https://downloads.apache.org/hive/

image-20210117221725910

2.1 测试编译环境

步骤1:上传源码tar包,解压到/opt/module/路径
tar -zxvf apache-hive-3.1.2-src.tar.gz -C /opt/module/
步骤2:将源码导入IDEA,并等待下载依赖

下载完依赖后,pom文件会报很多处错误,这个不能决定是否是错误。需要使用官方提供的编译打包方式去检验才行。

image-20210117222217697

步骤3:在修改依赖和代码之前,测试一下打包是否正常,用来检验编译环境是否正常

打开terminal终端,执行官方打包命令:

https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-BuildingHivefromSource

mvn clean package -Pdist -DskipTests -Dmaven.javadoc.skip=true

image-20210117222505604

打包成功标志:

image-20210117222815824

编译好的tar包在/opt/module/apache-hive-3.1.2-src/packaging/target路径下

image-20210117223104228

2.2 统一Hive与Hadoop的guava依赖版本

集群中所安装的Hadoop-3.1.3中和Hive-3.1.2中包含guava的依赖,Hadoop-3.1.3中的版本为guava-27.0-jre,而Hive-3.1.2中的版本为guava-19.0。由于Hive运行时会加载Hadoop依赖,故会出现依赖冲突的问题。

步骤1:修改Hive项目中pom.xml文件,将guava依赖的版本改为27.0-jre

<guava.version>19.0</guava.version>

更改为:

<guava.version>27.0-jre</guava.version>
步骤2:重复执行打包命令,根据错误提示修改源码。
mvn clean package -Pdist -DskipTests -Dmaven.javadoc.skip=true
步骤3:重复执行步骤2,直至打包成功。

注:休要修改的位置参考:https://github.com/gitlbo/hive/commits/3.1.2

image-20210117230109652

2.3 适配Spark3.0.0

Hive-3.1.2默认依赖的Spark版本为2.3.0,与集群中安装的Spark3.0.0存在兼容性问题。

步骤1:修改Hive项目的pom.xml文件,将spark依赖的版本改为3.0.0

<spark.version>2.3.0</spark.version>

改为:

<spark.version>3.0.0</spark.version>
步骤2:重新执行打包命令,根据错误提示修改源码
步骤3:重复执行步骤2,直至打包成功

注:需要修改的位置参考:https://github.com/gitlbo/hive/commits/3.1.2

2.4 修复Hive-19316问题

Hive3.1.2的release版本中存在https://issues.apache.org/jira/browse/HIVE-19316中所描述的问题,会影响到往表中插入数据。该问题题已在3.2.0版本中之后被解决了,但是Hive-3.1.2中仍然存在该问题。

需要修改的位置参考:

https://github.com/apache/hive/pull/378/commits/4e0686fcb7b9e4988156bfd9682ad3b96ae044b2

或者

https://github.com/gitlbo/hive/commits/3.1.2

3 测试编译好的源码

3.1 获取编译好的安装包

待上述问题全部解决完毕,重新打包

mvn clean package -Pdist -DskipTests -Dmaven.javadoc.skip=true

编译好的安装包位于/opt/software/apache-hive-3.1.2-src/packaging/target路径下,下图中的apache-hive-3.1.2-bin.tar.gz即为编译好的安装包。

3.2 测试

1)将编译完成的安装包上传到集群

2)将集群中已部署的Hive做好备份工作

3)解压新的安装包到原来的路径

4)将原来部署的Hive中的配置文件放入新的Hive中

[atguigu@hadoop102 hive]$ cp /opt/module/hive_bak/conf/hive-site.xml conf/
[atguigu@hadoop102 hive]$ cp /opt/module/hive_bak/conf/spark-defaults.conf  conf/

5)向新部署的Hive的lib目录下添加mysql驱动

[atguigu@hadoop102 hive]$ cp /opt/module/hive_bak/lib/mysql-connector-java-5.1.48.jar lib/

6)启动Hive客户端,测试

image-20210117234104277

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

最佳第六六六人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值