Hudi第一章:编译安装

系列文章目录

Hudi第一章:编译安装


文章目录

  • 系列文章目录
  • 前言
  • 一、环境准备
    • 1.JDK
    • 2.Maven
      • 1.上传并解压。
      • 2.修改源
      • 3.添加环境变量
  • 二、hudi编译
    • 1.上传解压
    • 2.修改pom
      • 1.添加仓库
      • 2.修改依赖的组件版本
    • 2.修改源码兼容hadoop3
    • 3.手动安装Kafka依赖
      • 1.上传jar包
      • 2.install到maven本地仓库
    • 4.解决spark模块依赖冲突
      • 1.修改hudi-spark-bundle的pom文件
      • 2.修改hudi-utilities-bundle的pom文件
    • 5.编译hudi
    • 6.hudi测试
  • 总结


前言

Apache Hudi(发音为“连帽衫”)是下一代流数据湖平台。 Apache Hudi 将核心仓库和数据库功能直接引入数据湖。Hudi 提供表、事务、高效的更新插入/删除、高级索引、流式摄取服务、数据聚类/压缩优化、 和并发性,同时将数据保留为开源文件格式。

Apache Hudi 不仅非常适合流式处理工作负载,而且还允许您创建高效的增量批处理管道。 阅读文档以获取更多用例说明,并查看谁在使用 Hudi,以了解一些 包括Uber、亚马逊、字节跳动、Robinhood等在内的世界上最大的数据湖正在与Hudi一起改造他们的生产数据湖。

Apache Hudi可以在任何云存储平台上轻松使用。 Hudi 的高级性能优化,使分析工作负载更快 流行的查询引擎包括Apache Spark,Flink,Presto,Trino,Hive等。

这时官方对Hudi的定义,机翻的看看就写了。


一、环境准备

一切资料可在尚硅谷拼台下载

1.JDK

Hudi官方要求最低是jdk8,安装方法可以去看hadoop专栏。
jdk安装

2.Maven

尚硅谷的教程建议是3.6.1,但我不知道为什么会失败,后来换成了3.8.8编译成功。
Maven-3.8.8

1.上传并解压。

tar -xvf apache-maven-3.8.8-bin.tar.gz -C /opt/module/
mv /opt/module/apache-maven-3.8.8/ /opt/module/maven-3.8.8/

2.修改源

vim /opt/module/maven-3.8.8/conf/settings.xml

将一下内容添加

<!-- 添加阿里云镜像-->
<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

放入mirrors标签中。
Hudi第一章:编译安装_第1张图片

3.添加环境变量

sudo vim /etc/profile.d/my_env.sh
在后边追加Maven的环境变量

#MAVEN_HOME
export MAVEN_HOME=/opt/module/maven-3.8.8
export PATH=$PATH:$MAVEN_HOME/bin

测试一下

source /etc/profile.d/my_env.sh
mvn -v

Hudi第一章:编译安装_第2张图片

二、hudi编译

1.上传解压

tar -xvf /opt/software/hudi-0.12.0.src.tgz -C /opt/software

Hudi第一章:编译安装_第3张图片

2.修改pom

1.添加仓库

一定要放在repositorys标签中的最前面

<repository>
  <id>central</id>
  <url>https://maven.aliyun.com/repository/central</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>

Hudi第一章:编译安装_第4张图片

2.修改依赖的组件版本

3.1.3
3.1.2
Hudi第一章:编译安装_第5张图片

2.修改源码兼容hadoop3

vim /opt/software/hudi-0.12.0/hudi-common/src/main/java/org/apache/hudi/common/table/log/block/HoodieParquetDataBlock.java

Hudi第一章:编译安装_第6张图片

3.手动安装Kafka依赖

1.上传jar包

Hudi第一章:编译安装_第7张图片

2.install到maven本地仓库

mvn install:install-file -DgroupId=io.confluent -DartifactId=common-config -Dversion=5.3.4 -Dpackaging=jar -Dfile=./common-config-5.3.4.jar
mvn install:install-file -DgroupId=io.confluent -DartifactId=common-utils -Dversion=5.3.4 -Dpackaging=jar -Dfile=./common-utils-5.3.4.jar
mvn install:install-file -DgroupId=io.confluent -DartifactId=kafka-avro-serializer -Dversion=5.3.4 -Dpackaging=jar -Dfile=./kafka-avro-serializer-5.3.4.jar
mvn install:install-file -DgroupId=io.confluent -DartifactId=kafka-schema-registry-client -Dversion=5.3.4 -Dpackaging=jar -Dfile=./kafka-schema-registry-client-5.3.4.jar

4.解决spark模块依赖冲突

1.修改hudi-spark-bundle的pom文件

vim /opt/software/hudi-0.12.0/packaging/hudi-spark-bundle/pom.xml
以箭头为表示,修改对应的pom

      <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>

Hudi第一章:编译安装_第8张图片

      <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>

Hudi第一章:编译安装_第9张图片

      <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>
      <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>

Hudi第一章:编译安装_第10张图片

2.修改hudi-utilities-bundle的pom文件

vim /opt/software/hudi-0.12.0/packaging/hudi-utilities-bundle/pom.xml

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

Hudi第一章:编译安装_第11张图片

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

Hudi第一章:编译安装_第12张图片

      <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>

Hudi第一章:编译安装_第13张图片

      <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>

Hudi第一章:编译安装_第14张图片

      <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>

Hudi第一章:编译安装_第15张图片

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

Hudi第一章:编译安装_第16张图片
整个添加。

    <!-- 增加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>

5.编译hudi

在根目录进行编译
Hudi第一章:编译安装_第17张图片

mvn clean package -DskipTests -Dspark3.2 -Dflink1.13 -Dscala-2.12 -Dhadoop.version=3.1.3 -Pflink-bundle-shade-hive3

编译速度取决于网络和计算机性能,反正时间挺长的。
可以稍微将内存调大一点避免内存不足。

Hudi第一章:编译安装_第18张图片

6.hudi测试

在这里插入图片描述

hudi-cli/hudi-cli.sh 

Hudi第一章:编译安装_第19张图片


总结

至此hudi的编译安装完成,可以再虚拟机打一张快照。

你可能感兴趣的:(Hudi学习专栏,hudi)