1.本地环境:
apache-flume-1.8.0-src (官网下载源码,或者git下载)
java1.8
2.编译
(1)用Inteallij IDEA 导入已下载的flume工程
(2)修改flume-parent下的 pom.xml 添加 aliyun的仓库(加快下载,有些包直接从maven repository上下 载很慢 )
<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 下面)
mvn clean mvn install -DskipTests -U -Dtar
(4)如果你只想编译某些模块,只需要在对应模块下执行
mvn install -DskipTests -U -Dtar
(5)由于整个项目是用pom管理包和模块,十分方便,如果在整个编译过程中,某些模块你需要编译, 或者编译耗时,或者编译失败,并且你暂时用不到整个模块,可以从pom中注释掉这个模块,不做编译, 具体做法如下图所示(具体的根据你的需求操作即可):
3.远程调试:
(1)修改服务器上的 bin/flume-ng 中的JAVA_OPTS变量,支持远程调试
JAVA_OPTS="-Xmx20m -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y"
具体如下:
(2)Inteallij IDEA配置 ,远程调试
(3)在任意代码出打上断点
(4)启动flume-ng(按实际情况修改下面命令)
bin/flume-ng agent --conf conf --conf-file ./conf/flume-custom.properties --name hd1 -Dflume.root.logger=INFO,console
启动后日志如下:
(5)Inteallij IDEA 开始debug,可以发现在断点处停止,debug流程成功了
4.思考:
- 源码编译耗时费力,需要耐心,熬过去了,会有很大收获,同样也是更好理解源码的开始,万事开头难
- remote debug可以更方便的了解执行流程,学习源码的捷径
相关推荐
flume源码
这是已经编译好的flume包,可以直接用于集成在Ambari上
flume 1.8所有源代码 编译通过版 附 maven3.5.2 安装包 解压配置maven,利用命令行进行编译,导入eclipse,可用于源代码查看,搭建flume远程测试环境
修改以后的flume-ng-core-1.7.0.jar,将原来的文件按行读取修改为按文件读取。使用时,直接替换到集群中flume安装目录下面lib文件夹中的flume-ng-core-1.7.0.jar即可使用。
flume修改源码读日志到hbase,①日志文件为json数据②修改文件编译打包并替换flumejar中的对应文件
通过修改flume源码实现flume向两个HA hadoop集群分发数据。
让你快速认识flume及安装和使用flume1 5传输数据 日志 到hadoop2 2 中文文档 认识 flume 1 flume 是什么 这里简单介绍一下 它是 Cloudera 的一个产品 2 flume 是干什么的 收集日志的 3 flume 如何搜集日志 我们把...
flume log4f示例源码
Apache flume1.6 的源码,源码写的很详细,底层的技术,channel sinks source的关系,启动顺序等。
通过修改flume源码实现flume向两个HA hadoop集群分发数据。
采集工具安装包,apache-flume-1.8.0-bin.tar和logstash-2.3.1.tar和sqoop-1.4.6.bin__hadoop-0.23.tar
基于flume+kafka+实时计算引擎(storm,spark,flink)的实时计算框架目前是比较火的一个分支,在实时数据采集组件中flume扮演着极为重要角色,logtash是ELK的重要组件部分,filebeat也是一个实时采集工具;
基于java的开发源码-日志服务器 Apache Flume.zip 基于java的开发源码-日志服务器 Apache Flume.zip 基于java的开发源码-日志服务器 Apache Flume.zip 基于java的开发源码-日志服务器 Apache Flume.zip 基于java的...
电商数仓项目(八) Flume 系列源码
Apache Flume 是一个分布式,高可用的数据收集系统,可以从不同的数据源收集数据,经过聚合后发送到分布式计算框架或者存储系统中。Spark Straming 提供了以下两种方式用于 Flume 的整合。 在推送式方法 (Flume-...
Flume1.6.0入门:安装、部署、及flume的案例
flume集群环境搭建,详细讲解,图文并茂,包括flume信息监控和众多文章链接
flume-ng-sql-source-1.5.2 基于flume1.6编译的和基于flume1.8编译的 custom.query逻辑做了些调整,单一条件参数作为查询结果的第一列,第一列正序排序。比较条件参数来返回结果。LastIndex中的保存的是参数条件,就...
flume支持RabbitMQ插件
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可...