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

Hudi 搭建  https://blog.csdn.net/weixin_46389691/article/details/128276527

        • 环境准备
        • 一、安装 Maven
          • 1.解压
          • 2.配置环境变量
          • 3.修改 Maven 下载源
        • 二、安装 Hudi
          • 1.解压
          • 2.配置环境变量
          • 3.修改 Hudi 下载源与对应版本号
          • 4.修改源码以兼容 Hadoop3.x
          • 5. 解决 Spark 依赖冲突
          • 6. 解决 Spark 向 Hudi 插入报错
          • 7. 编译 Hudi
          • 8. 启动测试

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

  • Hadoop 完全分布式搭建(超详细)

  • Hive 搭建(将 MySQL 作为元数据库)

  • Spark 集群搭建(多种方式)

  • Sqoop 安装配置(超详细)

环境准备

安装 Hudi 前我的集群版本如下:

组件 版本号
Hadoop 3.1.3
Spark 3.2.2
Hive 3.1.2
JDK 1.8
MySQL 5.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/
  • 1
  • 2
  • 3
  • 4

2.配置环境变量

vi /etc/profile

#MAVEN_HOME
MAVEN_HOME=/opt/module/maven-3.6.1
PATH=$PATH:$MAVEN_HOME/bin
  • 1
  • 2
  • 3
  • 4
  • 5

保存退出后注意使环境变量生效,souce /ect/profile

输入 mvn -v 检查是否安装成功。

在这里插入图片描述

3.修改 Maven 下载源

vi $MAVEN_HOME/conf/settings.xml 
  • 1

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



        nexus-aliyun
        central
        Nexus aliyun
        http://maven.aliyun.com/nexus/content/groups/public

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、安装 Hudi

1.解压

tar -zxvf hudi-0.12.0.src.tgz -C /opt/module/
  • 1

2.配置环境变量

vi /etc/profile

#HUDI_HOME
HUDI_HOME=/opt/module/hudi-0.12.0
  • 1
  • 2
  • 3
  • 4

保存退出后注意使环境变量生效,souce /ect/profile

3.修改 Hudi 下载源与对应版本号

vi $HUDI_HOME/pom.xml
  • 1

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



        nexus-aliyun
        nexus-aliyun
        http://maven.aliyun.com/nexus/content/groups/public/
        
            true
        
        
            false
        
    

继续编辑 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
  • 1

在 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
  • 1

解决 hive-service 依赖冲突:

在大约第 382 行。

      
        
          guava
          com.google.guava
        
        
          org.eclipse.jetty
          *
        
        
          org.pentaho
          *
        
      

解决 hive-jdbc 依赖冲突:

在大约第 413 行。

      
        
          javax.servlet
          *
        
        
          javax.servlet.jsp
          *
        
        
          org.eclipse.jetty
          *
        
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

解决 hive-metastore 依赖冲突:

在大约第 420 行。


        
          javax.servlet
          *
        
        
          org.datanucleus
          datanucleus-core
        
        
          javax.servlet.jsp
          *
        
        
          guava
          com.google.guava
        
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

解决 hive-common 依赖冲突:

在大约第 427 行。

   
        
          org.eclipse.jetty.orbit
          javax.servlet
        
        
          org.eclipse.jetty
          *
        
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

    
      org.eclipse.jetty
      jetty-server
      ${jetty.version}
    
    
      org.eclipse.jetty
      jetty-util
      ${jetty.version}
    
    
      org.eclipse.jetty
      jetty-webapp
      ${jetty.version}
    
    
      org.eclipse.jetty
      jetty-http
      ${jetty.version}
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

6. 解决 Spark 向 Hudi 插入报错

vim $HUDI_HOME/packaging/hudi-utilities-bundle/pom.xml
  • 1

解决 Hudi 冲突:

大约在第 345 行

     
       org.apache.hudi
       hudi-common
       ${project.version}
      
         
           org.eclipse.jetty
           *
         
       
     
     
       org.apache.hudi
       hudi-client-common
       ${project.version}
       
         
           org.eclipse.jetty
           *
         
       
     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

解决 hive-service 冲突:

大约在第 417 行

      
		
          servlet-api
          javax.servlet
        
        
          guava
          com.google.guava
        
        
          org.eclipse.jetty
          *
        
        
          org.pentaho
          *
        
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

解决 hive-jdbc 冲突:

大约在第 450 行

  
        
          javax.servlet
          *
        
        
          javax.servlet.jsp
          *
        
        
          org.eclipse.jetty
          *
        
      

解决 hive-metastore 冲突:

大约在第 471 行

      
        
          javax.servlet
          *
        
        
          org.datanucleus
          datanucleus-core
        
        
          javax.servlet.jsp
          *
        
        
          guava
          com.google.guava
        
      

解决 hive-common 冲突:

大约在第 496 行

      
        
          org.eclipse.jetty.orbit
          javax.servlet
        
        
          org.eclipse.jetty
          *
        
      

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

    
      org.eclipse.jetty
      jetty-server
      ${jetty.version}
    
    
      org.eclipse.jetty
      jetty-util
      ${jetty.version}
    
    
      org.eclipse.jetty
      jetty-webapp
      ${jetty.version}
    
    
      org.eclipse.jetty
      jetty-http
      ${jetty.version}
    

7. 编译 Hudi

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

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

8. 启动测试

cd $HUDI_HOME

# 启动 hudi-cli
hudi-cli/hudi-cli.sh
  • 1
  • 2
  • 3
  • 4

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

编译完成后,相关的包都在 $HUDI_HOME/packaging目录下:

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

你可能感兴趣的:(大数据,hive,hudi,spark)