0


Hudi 0.12.0 搭建——集成 Hive3.1 与 Spark3.2

Hudi 搭建

集群其它生态安装与配置:

  • Hadoop 完全分布式搭建(超详细)
  • Hive 搭建(将 MySQL 作为元数据库)
  • Spark 集群搭建(多种方式)
  • Sqoop 安装配置(超详细)

环境准备

安装 Hudi 前我的集群版本如下:
组件版本号Hadoop3.1.3Spark3.2.2Hive3.1.2JDK1.8MySQL5.7
注意,开始安装 Hudi 前请先检索你的集群,选择合适的 Hudi 版本。

一、安装 Maven

我这里使用的 Maven 版本为

3.6.1

1.解压

解压到你的指定路径中。

tar-zxvf apache-maven-3.6.1-bin.tar.gz -C /opt/module/

# 改个名称mv apache-maven-3.6.1/ maven-3.6.1/
2.配置环境变量
vi /etc/profile

#MAVEN_HOMEMAVEN_HOME=/opt/module/maven-3.6.1
PATH=$PATH:$MAVEN_HOME/bin

保存退出后注意使环境变量生效,

souce /ect/profile

输入

mvn -v

检查是否安装成功。

在这里插入图片描述

3.修改 Maven 下载源
vi$MAVEN_HOME/conf/settings.xml 

找到镜像属性配置的那里,添加镜像,我这里选用的阿里云镜像。

<!-- 添加阿里云镜像--><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>

二、安装 Hudi

1.解压
tar-zxvf hudi-0.12.0.src.tgz -C /opt/module/
2.配置环境变量
vi /etc/profile

#HUDI_HOMEHUDI_HOME=/opt/module/hudi-0.12.0

保存退出后注意使环境变量生效,

souce /ect/profile

3.修改 Hudi 下载源与对应版本号
vi$HUDI_HOME/pom.xml

找到镜像依赖配置,添加新的下载依赖,我这里选用的阿里云依赖,必须放在第一个,否则不会起作用。

<!-- 添加阿里云依赖--><repository><id>nexus-aliyun</id><name>nexus-aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository>

继续编辑

pom.xml

文件,修改组件的对应版本号。

4.修改源码以兼容 Hadoop3.x

Hudi 默认依赖的 Hadoop 为 Hadoop2.x,要兼容 Hadoop3.x,则需要修改 Hudi 源码。

vim$HUDI_HOME/hudi-common/src/main/java/org/apache/hudi/common/table/log/block/HoodieParquetDataBlock.java

HoodieParquetDataBlock.java

文件中的大约第 110 行中的参数中添加一个

null

值。

5. 解决 Spark 依赖冲突

我使用的 Hive 版本为

3.1.2

,其携带的 jetty 版本是

0.9.3

,而 Hudi 本身用的 jetty 版本是

0.9.4

,存在依赖冲突,会造成编译错误。

vim$HUDI_HOME/packaging/hudi-spark-bundle/pom.xml

解决 hive-service 依赖冲突:

在大约第 382 行。

<exclusions><exclusion><artifactId>guava</artifactId><groupId>com.google.guava</groupId></exclusion><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>org.pentaho</groupId><artifactId>*</artifactId></exclusion></exclusions>

解决 hive-jdbc 依赖冲突:

在大约第 413 行。

<exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>javax.servlet.jsp</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion></exclusions>

解决 hive-metastore 依赖冲突:

在大约第 420 行。

<exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>org.datanucleus</groupId><artifactId>datanucleus-core</artifactId></exclusion><exclusion><groupId>javax.servlet.jsp</groupId><artifactId>*</artifactId></exclusion><exclusion><artifactId>guava</artifactId><groupId>com.google.guava</groupId></exclusion></exclusions>

解决 hive-common 依赖冲突:

在大约第 427 行。

<exclusions><exclusion><groupId>org.eclipse.jetty.orbit</groupId><artifactId>javax.servlet</artifactId></exclusion><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion></exclusions>

增加 Hudi 配置版本的 jetty 依赖:

<dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-server</artifactId><version>${jetty.version}</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-util</artifactId><version>${jetty.version}</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-webapp</artifactId><version>${jetty.version}</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-http</artifactId><version>${jetty.version}</version></dependency>

6. 解决 Spark 向 Hudi 插入报错
vim$HUDI_HOME/packaging/hudi-utilities-bundle/pom.xml

解决 Hudi 冲突:

大约在第 345 行

<dependency><groupId>org.apache.hudi</groupId><artifactId>hudi-common</artifactId><version>${project.version}</version><exclusions><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.hudi</groupId><artifactId>hudi-client-common</artifactId><version>${project.version}</version><exclusions><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency>

解决 hive-service 冲突:

大约在第 417 行

<exclusions><exclusion><artifactId>servlet-api</artifactId><groupId>javax.servlet</groupId></exclusion><exclusion><artifactId>guava</artifactId><groupId>com.google.guava</groupId></exclusion><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>org.pentaho</groupId><artifactId>*</artifactId></exclusion></exclusions>

解决 hive-jdbc 冲突:

大约在第 450 行

<exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>javax.servlet.jsp</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion></exclusions>

解决 hive-metastore 冲突:

大约在第 471 行

<exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>org.datanucleus</groupId><artifactId>datanucleus-core</artifactId></exclusion><exclusion><groupId>javax.servlet.jsp</groupId><artifactId>*</artifactId></exclusion><exclusion><artifactId>guava</artifactId><groupId>com.google.guava</groupId></exclusion></exclusions>

解决 hive-common 冲突:

大约在第 496 行

<exclusions><exclusion><groupId>org.eclipse.jetty.orbit</groupId><artifactId>javax.servlet</artifactId></exclusion><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion></exclusions>

增加 Hudi 配置版本的 jetty 依赖:

<dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-server</artifactId><version>${jetty.version}</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-util</artifactId><version>${jetty.version}</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-webapp</artifactId><version>${jetty.version}</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-http</artifactId><version>${jetty.version}</version></dependency>
7. 编译 Hudi
mvn clean package -DskipTests-Dspark3.2 -Dscala-2.12 -Dhadoop.version=3.1.3 -Pflink-bundle-shade-hive3

需要 10 分钟左右,等待依赖下载完成。

8. 启动测试
cd$HUDI_HOME# 启动 hudi-cli
hudi-cli/hudi-cli.sh

出现如下界面,表示 Hudi 编译成功。

编译完成后,相关的包都在

$HUDI_HOME/packaging

目录下:

到此为止,Hudi 0.12.0 安装完成。

标签: Hudi hive hadoop

本文转载自: https://blog.csdn.net/weixin_46389691/article/details/128276527
版权归原作者 月亮给我抄代码 所有, 如有侵权,请联系我们删除。

“Hudi 0.12.0 搭建——集成 Hive3.1 与 Spark3.2”的评论:

还没有评论