cdh安装flink_hadoop为什么要编译源码

cdh安装flink_hadoop为什么要编译源码准备工作 因为在编译时需要下载许多依赖包,在执行编译前最好先配置下代理仓库 编译flink shaded 因为flink依赖flink shaded工程,基本的依赖项都是在这个工程里面定义的,所以要先

flink编译支持CDH6.2.0(hadoop3.0.0)

准备工作

因为在编译时需要下载许多依赖包,在执行编译前最好先配置下代理仓库

<mirrors>
 
   
  <mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>https://maven.aliyun.com/repository/public</url>
  </mirror>
    
 </mirrors>  
 

代码100分

因为flink依赖flink-shaded工程,基本的依赖项都是在这个工程里面定义的,所以要先编译这个工程

  1. 下载flink-shaded工程flink-shaded
  2. 在写文章时,最新的release版本是8.0,里面用的hadoop及zookeeper对应版本如下

    代码100分<properties>
            <avro.version>1.8.2</avro.version>
            <slf4j.version>1.7.15</slf4j.version>
            <log4j.version>1.2.17</log4j.version>
            <hadoop.version>2.4.1</hadoop.version>
            <zookeeper.version>3.4.10</zookeeper.version>
            <findbugs.version>1.3.9</findbugs.version>
        </properties>
  3. 将hadoop和zk改成自己CDH6.2.0对应的版本,修改flink-shaded-hadoop-2工程的pom文件

    <properties>
            <avro.version>1.8.2</avro.version>
            <slf4j.version>1.7.15</slf4j.version>
            <log4j.version>1.2.17</log4j.version>
            <hadoop.version>3.0.0</hadoop.version>
            <zookeeper.version>3.4.5</zookeeper.version>
            <findbugs.version>1.3.9</findbugs.version>
        </properties>
  4. 修改编译后的版本号
    • 设置/Users/chengaofeng/git/flink-shaded/tools/releasing/update_branch_version.sh 工程中的OLD_VERSION=8.0和NEW_VERSION=9.0
    • 在tools目录下执行 sh releasing/update_branch_version.sh 命令
  5. 修改flink-shaded-hadoop-2和flink-shaded-hadoop-2-uber工程中依赖的外部变量名称

    代码100分<artifactId>flink-shaded-hadoop-2-uber</artifactId>
        <name>flink-shaded-hadoop-2-uber</name>
    
        <packaging>jar</packaging>
        <version>${hadoop.version}-9.0</version>
    <artifactId>flink-shaded-hadoop-2</artifactId>
        <name>flink-shaded-hadoop-2</name>
    
        <packaging>jar</packaging>
        <version>${hadoop.version}-9.0</version>
  6. 进入flink-shaded目录执行编译

mvn  clean install -DskipTests -Drat.skip=true -Pvendor-repos  -Dhadoop.version.cdh=3.0.0

效果图cdh安装flink_hadoop为什么要编译源码

  1. 下载源码flink
  2. 写文章时最新的release版本是1.9,所以下载1.9版本的代码
  3. 修改对应的hadoop和flink.shaded.version值为我们需要的值

            <hadoop.version>3.0.0</hadoop.version>
            ...
            <flink.shaded.version.old>7.0</flink.shaded.version.old>
            <flink.shaded.version>9.0</flink.shaded.version>
            ...
            <hivemetastore.hadoop.version>3.0.0</hivemetastore.hadoop.version>
    

    因为只想更新hadoop的版本,所以依赖的其他flink-shaded版本不做变更,以下jackson举例说明,还是用旧的版本(用最新的编译没有编译过)

    
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-shaded-jackson</artifactId>
            <version>${jackson.version}-${flink.shaded.version.old}</version>
        </dependency>
    
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-shaded-jackson-module-jsonSchema</artifactId>
            <version>${jackson.version}-${flink.shaded.version.old}</version>
        </dependency>
  4. 修改flink-connectors/flink-hbase中依赖的hbase版本号

    <properties>
            <hbase.version>2.1.2</hbase.version>
        </properties>

    之后需要修改这个工程中的AbstractTableInputFormat.java,TableInputFormat.java以及junit中的编译错误

  5. 修改版本号
    修改tools/change-version.sh中新旧版本号

    OLD="1.9-SNAPSHOT"
    NEW="1.9-H3"
    
  6. 执行脚本change-version.sh

  7. 注释掉不需要编译的工程,因为这个编译太耗时间,可以把测试相关的包去掉
    cdh安装flink_hadoop为什么要编译源码

  8. 执行编译

    mvn clean install -DskipTests -Pvendor-repos -Drat.skip=true -Pinclude-hadoop
  9. 编译结果
    cdh安装flink_hadoop为什么要编译源码
    cdh安装flink_hadoop为什么要编译源码

  10. 在工程中使用新编译出的版本

    <properties>
            <flink.version>1.9-H3</flink.version>
        </properties>
    

    对应修改后的代码地址github 版本:release-1.9

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10194.html

(0)
上一篇 2023-01-23 18:00
下一篇 2023-01-23

相关推荐

  • Python实现访问数据库的API接口设计

    Python实现访问数据库的API接口设计SQLAlchemy是一个Python SQL工具和对象关系映射器(ORM),可以方便地实现访问数据库的API接口,适用于多种关系型数据库。它提供了一种简单的方式来定义数据模型,并将其映射到数据库模式。相比于直接使用SQL语句,SQLAlchemy可以轻松地修改数据库模型而不用修改SQL语句。此外,SQLAlchemy还提供了一些高级功能,例如连接池、事务、数据库迁移等,使得访问数据库变得更加方便和可靠。

    2023-12-05
    117
  • bat文件备份数据库[亲测有效]

    bat文件备份数据库[亲测有效]
    @echo off/*获取当前日期*/ set “Ymd=%date:~,4%%date:~5,2%%date:~8,2%” /*数据库自带的备份脚本的存放…

    2023-04-05
    153
  • Debian 10安装 MySQL8「建议收藏」

    Debian 10安装 MySQL8「建议收藏」登录mysql官网: https://dev.mysql.com/downloads/ 选择: https://dev.mysql.com/downloads/repo/apt/ wget 下载: …

    2022-12-23
    162
  • PostGIS 操作 geometry 方法[亲测有效]

    PostGIS 操作 geometry 方法[亲测有效]PostGIS 操作 geometry 方法 gemo 转 wkt select st_astext(geom) from geo_collection; 获得区域范围 select st_xmin(

    2023-04-29
    144
  • 自学 Python 的心路历程

    自学 Python 的心路历程Python 是一种高级编程语言,在很多应用场景中都有广泛的应用。在过去几年中,Python 的使用越来越广泛,越来越受到编程爱好者和工程师们的喜欢。事实上,我自己也是一个 Python 爱好者和工程师。在这篇文章中,我将分享我自学 Python 的心路历程。

    2024-04-24
    57
  • 如何彻底卸载Python

    如何彻底卸载PythonPython是一种高级、通用、解释型的编程语言,它具有易读易写、简单清晰的语法,以及广泛的标准库和第三方模块,被广泛应用于Web开发、科学计算、数据分析、人工智能等各个领域。然而,由于种种原因,有时候我们需要彻底卸载Python。

    2024-08-13
    32
  • Redis 集群演进探讨和总结「建议收藏」

    Redis 集群演进探讨和总结「建议收藏」Redis为什么需要集群? 首先Redis单实例主要有单点,容量有限,流量压力上限的问题。 Redis单点故障,可以通过主从复制 ,和自动故障转移 哨兵机制。 但Redis单 实例提供读写服务,仍然有

    2023-03-03
    145
  • Python sep参数的用法

    Python sep参数的用法a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-05-06
    89

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注