编译Flume源码 – Flume

1. Flume 简介

Flume 是一个分布式、可靠和高可用的日志采集、传输和聚合系统。支持在系统中定制各类数据发送方,用于收集数据。同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。

Flume 是 Apache 的顶级项目,官方网站:http://flume.apache.org/

Flume 是一个 java 的 maven 项目,要编译 Flume 源码,就得配置 jdk 以及 maven 环境。

2. 配置 maven

以下配置非必需配置,只是笔者做下的记录,配置好 jdk 和 maven 即可编译 Flume

修改本地配置,默认 ${user.home}/.m2/settings.xml

2.1 配置国内中央仓库
<settings>
  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>
</settings>
2.2 配置代理
<settings>
  ...
  <proxies>
    <proxy>
      <id>httpproxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>xxx.xxx.com</host>
      <port>3128</port>
    </proxy>
    <proxy>
      <id>httpsproxy</id>
      <active>true</active>
      <protocol>https</protocol>
      <host>xxx.xxx.com</host>
      <port>3128</port>
    </proxy>
  </proxies>
  ...
</settings>
2.3 maven 命令

mvn clean 这个命令可以用来清理已经编译好的文件

mvn compile 将 Java 代码编译成 Class 文件

mvn test 项目测试

mvn package 根据用户的配置,将项目打成 jar 包或者 war 包

mvn install 手动向本地仓库安装一个 jar

mvn deploy 将 jar 上传到私服

3. 编译 Flume

配置好 JDK 以及 maven 环境后,便可以在 flume 源码根目录执行 mvn compile 来进行编译了。其中记录一下编译过程中可能遇到的问题。

3.1 ua_parser:ua-parser:jar:1.3.0 is missing

中央仓库找不到 ua_parser 依赖。

可以到这里 https://mvnrepository.com/artifact/ua_parser/ua-parser/1.3.0 查看依赖在哪个仓库存有。

可以看到该依赖在推特库上存有 (this artifact is located at Twitter repository (https://maven.twttr.com/))
但推特库是被墙的,不过笔者科学过去也无法访问。于是找了存在该依赖的另一个仓库,在 pom.xml 添加该仓库

<repositories>
  <repository>
     <id>wso2</id>
     <url>https://maven.wso2.org/nexus/content/groups/wso2-public/</url>
  </repository>
</repositories>

4. 打包 Flume

编译成功后,便可以执行 mvn package 进行打包成 jar 包。或者直接执行 mvn install 打包并安装 jar 到本地仓库。

在打包 flume 过程中,可能会在测试步骤不通过,可以使用 mvn install -DskipTests 来跳过单元测试。

另外,flume 项目是一个多模块的 maven 项目,不想编译整个 flume 的话,可以进入相应模块的目录进行单个模块打包。

留下评论

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