若泽大数据 www.ruozedata.com

ruozedata


  • 主页

  • 归档

  • 分类

  • 标签

  • 发展历史

  • Suche

生产上Flume如何源码编译and远程Debug

Veröffentlicht am 2019-07-11 | Bearbeitet am 2019-07-24 | in Flume | Aufrufe:

本地环境

  1. apache-flume-1.8.0-src (官网下载源码,或者git下载)
  2. jdk1.8

编译

  1. 用Inteallij IDEA 导入已下载的flume工程
  2. 修改flume-parent下的 pom.xml 添加 aliyun的仓库(加快下载,有些包直接从maven repository上下载很慢 )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <repositories><!-- 代码库 -->
    <repository>
    <id>maven-ali</id>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    <updatePolicy>always</updatePolicy>
    <checksumPolicy>fail</checksumPolicy>
    </snapshots>
    </repository>
    </repositories>
  3. 开始漫长的编译过程

    如果是第一次的话,可能下载包要花2个多小时,中间可能会报错(报错主要是某些包没下载成功,此时可以手动从仓库中手动下载到本地,然后放在本地 的maven 包路径下,默认的本地的包路径是 C:\Users\你的用户名.m2\repository 下面)

    1
    2
    mvn clean
    mvn install -DskipTests -U -Dtar
  4. 由于整个项目是用pom管理包和模块,十分方便,如果在整个编译过程中,某些模块你需要编译,或者编译耗时,或者编译失败,并且你暂时用不到整个模块,可以从pom中注释掉这个模块,不做编译,具体做法如下图所示(具体的根据你的需求操作即可)
    mark

远程调试

  1. 修改服务器上的 bin/flume-ng 中的JAVA_OPTS变量,支持远程调试

    1
    JAVA_OPTS="-Xmx20m -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y"
具体如下:

mark

  1. Inteallij IDEA配置 ,远程调试

mark

mark

mark

  1. 在任意代码出打上断点

mark

  1. 启动flume-ng(按实际情况修改下面命令)

    1
    bin/flume-ng agent --conf conf --conf-file ./conf/flume-custom.properties --name hd1 -Dflume.root.logger=INFO,console

    启动后日志如下:

mark

  1. Inteallij IDEA 开始debug,可以发现在断点处停止,debug流程成功了

mark

思考

  • 源码编译耗时费力,需要耐心,熬过去了,会有很大收获,同样也是更好理解源码的开始,万事开头难
  • remote debug可以更方便的了解执行流程,学习源码的捷径
ruozedata WeChat Bezahlung
# Flume # 源码编译
Docker实践之常用命令及自定义Web首页
Kudu与Spark集成
  • Inhaltsverzeichnis
  • Übersicht

ruozedata

若泽数据优秀博客汇总
155 Artikel
31 Kategorien
74 schlagwörter
RSS
GitHub B站学习视频 腾讯课堂学习视频 官网
  1. 1. 本地环境
  2. 2. 编译
  3. 3. 远程调试
  4. 4. 思考
|
若泽数据
|