• 【Flink】第一节 源码编译


    我认识以及改造flink的第一步从下载编译源码开始

    0、环境

    idea

    java 1.8

    scala 2.12

    flink 1.16

    maven-setting(核心)

    nodejs(这个去官网下载安装一下就好,npm -v 显示成功就好)

    文末附有核心setting的配置

    1、下载源码

    由于网络问题,所以我是从gitee上进行代码的拉取

    flink: Apache Flink 是高效和分布式的通用数据处理平台

    2、idea 导入源码

     记住,导入源码后要检查四个问题:

    idea plugin中scala是否设置了(可能会有网络问题,设置一下代理,代理如下,设置前ping一下,失效了再去搜一个对应网址地址,设置完毕后重启一下idea)

    13.249.171.117 plugins.jetbrains.com
    13.249.171.117 jetbrains.com

    scala sdk环境是否设置了;

    java sdk是否设置了;

    maven 环境是否设置了

    3、编译打包 

    根目录下运行,运行完毕后可能要等30min左右(起码我是),然后最后会显示build sucess;假如有特殊需求需要跳过某一个,则可以执行 mvn -rf XXXModule

    测试代码不能跳过编译,但可跳过执行

    mvn install -Drat.skip=true -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -Dfast -T 4 -Dmaven.compile.fork=true

    4、测试运行

    运行exapmple中的stream-wordcount,测试编译等是否正常;正常会显示最终的wordcount结果,如下所示

    在测试过程中可能会有问题,经常出现的一个问题是akka抛错,可以根据后面的提示进行解决,如下:

    mvn clean package -pl flink-rpc/flink-rpc-akka,flink-rpc/flink-rpc-akka-loader -DskipTests
    

    附件

    setting文件-setting.xml

    注意本地仓库的地址要记得修改为自己的地址,其他照搬即可

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    4. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    5. <!--本地仓库路径-->
    6. <localRepository>E:\maven-repository</localRepository>
    7. <!--注意:mirrorOf千万别为*,建议为profile的id-->
    8. <mirrors>
    9. <mirror>
    10. <id>aliyun-nexus</id>
    11. <name>aliyun-nexus</name>
    12. <mirrorOf>aliyun</mirrorOf>
    13. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    14. </mirror>
    15. <mirror>
    16. <id>huawei-nexus</id>
    17. <name>huawei-nexus</name>
    18. <mirrorOf>huawei</mirrorOf>
    19. <url>https://mirrors.huaweicloud.com/repository/maven/</url>
    20. </mirror>
    21. <mirror>
    22. <id>confluent-nexus</id>
    23. <name>confluent-nexus</name>
    24. <mirrorOf>confluent</mirrorOf>
    25. <url>https://packages.confluent.io/maven/</url>
    26. </mirror>
    27. </mirrors>
    28. <profiles>
    29. <profile>
    30. <id>aliyun</id>
    31. <repositories>
    32. <repository>
    33. <id>aliyun-nexus</id>
    34. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    35. <releases>
    36. <enabled>true</enabled>
    37. </releases>
    38. <snapshots>
    39. <enabled>true</enabled>
    40. </snapshots>
    41. </repository>
    42. </repositories>
    43. <pluginRepositories>
    44. <pluginRepository>
    45. <id>aliyun-nexus</id>
    46. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    47. <releases>
    48. <enabled>true</enabled>
    49. </releases>
    50. <snapshots>
    51. <enabled>true</enabled>
    52. </snapshots>
    53. </pluginRepository>
    54. </pluginRepositories>
    55. </profile>
    56. <profile>
    57. <id>huawei</id>
    58. <repositories>
    59. <repository>
    60. <id>huawei-nexus</id>
    61. <url>https://mirrors.huaweicloud.com/repository/maven/</url>
    62. <releases>
    63. <enabled>true</enabled>
    64. </releases>
    65. <snapshots>
    66. <enabled>true</enabled>
    67. </snapshots>
    68. </repository>
    69. </repositories>
    70. <pluginRepositories>
    71. <pluginRepository>
    72. <id>huawei-nexus</id>
    73. <url>https://mirrors.huaweicloud.com/repository/maven/</url>
    74. <releases>
    75. <enabled>true</enabled>
    76. </releases>
    77. <snapshots>
    78. <enabled>true</enabled>
    79. </snapshots>
    80. </pluginRepository>
    81. </pluginRepositories>
    82. </profile>
    83. <profile>
    84. <id>confluent</id>
    85. <repositories>
    86. <repository>
    87. <id>confluent-nexus</id>
    88. <url>https://packages.confluent.io/maven/</url>
    89. <releases>
    90. <enabled>true</enabled>
    91. </releases>
    92. <snapshots>
    93. <enabled>true</enabled>
    94. </snapshots>
    95. </repository>
    96. </repositories>
    97. <pluginRepositories>
    98. <pluginRepository>
    99. <id>confluent-nexus</id>
    100. <url>https://packages.confluent.io/maven/</url>
    101. <releases>
    102. <enabled>true</enabled>
    103. </releases>
    104. <snapshots>
    105. <enabled>true</enabled>
    106. </snapshots>
    107. </pluginRepository>
    108. </pluginRepositories>
    109. </profile>
    110. <profile>
    111. <id>cdh</id>
    112. <repositories>
    113. <repository>
    114. <id>cdh-nexus</id>
    115. <releases>
    116. <enabled>true</enabled>
    117. <updatePolicy>never</updatePolicy>
    118. <checksumPolicy>fail</checksumPolicy>
    119. </releases>
    120. <snapshots>
    121. <enabled>false</enabled>
    122. <updatePolicy>always</updatePolicy>
    123. <checksumPolicy>warn</checksumPolicy>
    124. </snapshots>
    125. <name>Cloudera Repositories</name>
    126. <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
    127. <layout>default</layout>
    128. </repository>
    129. </repositories>
    130. <pluginRepositories>
    131. <pluginRepository>
    132. <id>cdh-nexus</id>
    133. <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
    134. <releases>
    135. <enabled>true</enabled>
    136. </releases>
    137. <snapshots>
    138. <enabled>true</enabled>
    139. </snapshots>
    140. </pluginRepository>
    141. </pluginRepositories>
    142. </profile>
    143. <profile>
    144. <id>apache</id>
    145. <repositories>
    146. <repository>
    147. <id>apache-nexus</id>
    148. <releases>
    149. <enabled>true</enabled>
    150. <updatePolicy>never</updatePolicy>
    151. <checksumPolicy>fail</checksumPolicy>
    152. </releases>
    153. <snapshots>
    154. <enabled>false</enabled>
    155. <updatePolicy>always</updatePolicy>
    156. <checksumPolicy>warn</checksumPolicy>
    157. </snapshots>
    158. <name>apache Repositories</name>
    159. <url>https://repository.apache.org/content/repositories/snapshots/</url>
    160. <layout>default</layout>
    161. </repository>
    162. </repositories>
    163. <pluginRepositories>
    164. <pluginRepository>
    165. <id>apache-nexus</id>
    166. <url>https://repository.apache.org/content/repositories/snapshots/</url>
    167. <releases>
    168. <enabled>true</enabled>
    169. </releases>
    170. <snapshots>
    171. <enabled>true</enabled>
    172. </snapshots>
    173. </pluginRepository>
    174. </pluginRepositories>
    175. </profile>
    176. </profiles>
    177. <!--设置默认配置文件-->
    178. <activeProfiles>
    179. <activeProfile>aliyun</activeProfile>
    180. </activeProfiles>
    181. </settings>

    参考:

    1、flink编译过程中遇到的问题以及加速 https://blog.csdn.net/spark_dev/article/details/124008534 

  • 相关阅读:
    高压放大器在超声马达中的应用有哪些
    【Python从入门到实践】Python初识
    【ONE·C++ || 智能指针 & 特殊类的设计】
    Linux入门攻坚——4、shell编程初步、grep及正则表达式
    Flume启停脚本f1.sh
    前端绘制地铁路线图
    leetcode做题笔记242. 有效的字母异位词
    OpenCV类VideoCapture构造函数中参数apiPreference的可选值及意义
    git hook
    [ C++ ] 抽象类 虚函数 虚函数表 -- C++多态(1)
  • 原文地址:https://blog.csdn.net/mojir/article/details/126430300