hudi搭建

对于hudi的安装,我们需要自己下载包进行编译。hudi下载地址 Index of /dist/hudi (apache.org) ,下面是hudi编译的详细步骤:

1、下载maven安装包

maven下载地址为:https://maven.apache.org/download.cgi

#利用wget工具进行maven资源拉取
wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz

2.解压并配置环境变量

1.解压安装包

#解压环境
tar -zxvf apache-maven-3.8.4-bin.tar.gz -C /opt/software/
mv apache-maven-3.8.4/ maven384

2.配置环境变量

#打开环境变量文件,输入以下内容
vim /etc/profile.d/my.sh
#---------------------------------------
#MAVEN
export MAVEN_HOME=/opt/software/maven384
export PATH=$PATH:$MAVEN_HOME/bin
#---------------------------------------
#生效环境变量
source /etc/profile

3、maven仓库配置

1.打开文件

#打开配置文件
vim /opt/software/maven384/conf/settings.xml
#创建本地仓库
mkdir /opt/software/maven384/ck

2.输入以下内容

<!--本地maven仓库地址-->
<localRepository>/opt/software/maven384/ck</localRepository>
<!--配置阿里的maven仓库-->
    <mirror>
       <id>alimaven</id>
       <name>aliyun maven</name>
           <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
       <mirrorOf>central</mirrorOf>
    </mirror>
<!--配置华为的maven仓库-->
    <mirror>
      <id>huaweicloud</id>
      <mirrorOf>*</mirrorOf>
      <url>https://mirrors.huaweicloud.com/repository/maven/</url>
    </mirror>

4、验证maven仓库是否配置完成

#查看maven版本信息,验证maven是否安装成功
mvn -v
#---------------------------------------------------------------------------------------
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /opt/software/maven384
Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /opt/software/jdk8/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.45.1.el7.x86_64", arch: "amd64", family: "unix"
#---------------------------------------------------------------------------------------

5、编译打包hudi

hudi原生包的下载地址为:https://hudi.apache.org/releases/download

1.解压文件

#wget下载hudi
wget https://www.apache.org/dyn/closer.lua/hudi/0.10.0/hudi-0.10.0.src.tgz
#解压hudi安装包
tar -zxvf hudi-0.10.0.src.tgz -C /opt/software/

2.配置相关配置信息

#打开配置文件,添加远程镜像源
vim /opt/software/hudi-0.10.0/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>
    <repository>
      <id>huaweicloud</id>
      <mirrorOf>*</mirrorOf>
      <url>https://mirrors.huaweicloud.com/repository/maven/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
         <id>maven-ossez</id>
         <name>OSSEZ Repository</name>
         <url>https://maven.ossez.com/repository/internal</url>
         <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
     </repository>
#--------------------------------------------------------------
#对hudi进行版本编译,支持scala2.12和spark3
mvn clean package -DskipTests -DskipITs -Dscala-2.12 -Dspark3
                                    kafka-schema-registry-client-6.1.1.jar
pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar
common-config-6.1.1.jar
common-utils-6.1.1.jar
kafka-avro-serializer-6.1.1.jar
                                    hudi编译失败,不能通过maven自动下载的jar包,包括: pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar, kafka-schema-registry-client-5.3.4.jar,kafka-avro-serializer-5.3.4.jar,common-utils-5.3.4.jar,common-config-5.3.4.jar,这些需要自己下载安装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
                                    1)上传相关jar包至/root/hudi-jars。注意集群每个都需要配编号,分别为1、2、3。/opt/software :软件压缩包。/opt/module :解压后的软件。注意修改其他服务器的broker.id。上传解压至/opt/module。在slave2开启节点均衡计划。启动前格式化namenode。上传并解压hudi安装包。zookeeper目录下。
Hudi是什么?可以说Hudi是一个数据湖或是数据库,但它又不是数据湖或是数据库。笔者理解为Hudi是不带计算功能Hive。
众所周知,Hive是一个计算引擎,但是现在我们更多的是使用Spark基于Hive对HDFS中文件提供的Schema信息和元数据进行计算,而Hive作为计算引擎的功能逐渐被忽略,更多的是将Hive视作一个“数据库”(尽管它并不是),而Hudi则是完善了Hive的这部分功能。
使用Hudi对HDFS或是其他存储系统中的文件进行管理,使用Hudi创建相应的表,一样可以使用H
                                    说起编译hudi,从第一遍过之后,再回过头来看,发现就是第一遍不熟悉,出现的一切问题可以总结为maven仓库没配置好。一开始我只是配置了阿里云仓库,但是后面不断报错,然后百度谷歌找原因,再调整配置,再编译,最后就成功了,所以整体来说编译不复杂,只要配置正确,那我把最后可以通过的配置贴出来,这也是我觉得可以帮助到大部分同学的地方。hudi迭代还是比较快的,因为同时也依赖了hadoop和spark,为了组合使用,我使用的是0.9.0版本,对应地址:[https://hudi.apache.org/release
                                    pom文件位置:vim /opt/software/hudi-0.12.0/packaging/hudi-spark-bundle/pom.xml (在382行的位置,修改如下红色部分)位置:vim /opt/software/hudi-0.12.0/packaging/hudi-utilities-bundle/pom.xml(在405行的位置,修改如下(红色部分))修改了Hive版本为3.1.2,其携带的jetty是0.9.3,hudi本身用的0.9.4,存在依赖冲突。
在本地构建可以跑Flink-Hudi、Spark-Hudi等demo的环境,本地环境是arm64架构的M1芯片,所以比较特殊,如果采用Hudi官网的docker搭建,目前不支持,本人也在Hudi的github上提过此类需求,虽得到了响应,但还是在部署的时候会出问题,然后基于其实Hudi就是一种对存储格式的管理模式,此格式可以是HDFS,也可以是各大云厂商的文件存储系统,例如阿里云的OSS,华为云的OBS等,都是可以支持的,所以本地只需要部署一套Hadoop架构就可以跑起来相关的案...