Flume源码分析–flume-ng解析
以此篇作为研究、学习源码的起步。
Flume简介
Flume 是一个高可用的、高可靠的分布式系统,可以从不同的数据源进行日志的采集、聚合、传输,可以将采集到的日志传输到HDFS、HBase、MySQL等。数据源和接收数据的端都是可定制的。
Flume本地化调试
1、安装java JDK。
2、从FLume官网下载编译好的flume包和flume源码包,并进行解压(我这里是flume1.8.0)。
3、编写一份简单的flume配置文件(我这里是flume.conf):
a1.sources = r1
a1.channels = c1
a1.sinks = s1
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
a1.sinks.s1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.s1.channel = c1
4、启动flume,验证flume是否搭建成功:
bin/flume-ng agent --conf ./conf/ -f conf/flume.conf -Dflume.root.logger=DEBUG,console -n a1
5、将源码包进行解压,导入IDEA中,加载相关的maven依赖。
6、flume agent 启动是用的flume-ng-nodezhogn de org.apache.flume.node.Application.java, 配置 Application.java 的运行参数:
7、编译源码:mvn clean package -DskipTests
8、将编译后的target中的avro文件拷贝到 flume-ng-sdk中的 org.apache.flume.source.avro目录下。
9、将之前编写好的flume.conf文件复制到flume-ng-node的根目录下,复制log4j.properties复制到flume-ng-node中的src.main.java目录下。
10、debug Application.java