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可以更方便的了解执行流程,学习源码的捷径
相关推荐
**大数据Ambari之flume集成编译好的源码包** Apache Ambari 是一个用于管理和监控Hadoop集群的开源工具,它提供...因此,使用预编译好的Flume源码包与Ambari集成,可以大大提高大数据环境中数据流处理的效率和可靠性。
为了在Eclipse中进一步开发和调试Flume,你需要将编译后的源代码导入到Eclipse项目中。启动Eclipse,选择“File” -> “Import” -> “Existing Maven Projects”,然后浏览并选择Flume源码的根目录。Eclipse将自动...
通过分析 Apache Flume 1.7.0 的源码,开发者可以深入了解其内部工作流程,优化性能,解决实际问题,并为构建自己的数据采集和传输解决方案打下坚实基础。同时,对于大数据领域的研究者,源码也是深入研究数据处理...
修改以后的flume-ng-core-1.7.0.jar,将原来的文件按行读取修改为按文件读取。使用时,直接替换到集群中flume安装目录下面lib文件夹中的flume-ng-core-1.7.0.jar即可使用。
Apache Flume 是一个分布式、可靠且可用的数据收集系统,用于高效地聚合、移动大量日志数据。Flume 1.6 版本是其一个重要里程碑,...如果你想要在大数据日志处理领域有所建树,对 Flume 源码的深入学习是必不可少的。
Flume是Apache Hadoop项目的一部分,专门设计用于高效地收集、聚合和移动大规模日志数据。它的核心架构基于事件流,具备分布式、高可靠性和高可用性。Flume通过agent来实现数据采集,每个agent包含source、sink和...
flume修改源码读日志到hbase,①日志文件为json数据②修改文件编译打包并替换flumejar中的对应文件
让你快速认识flume及安装和使用flume1 5传输数据 日志 到hadoop2 2 中文文档 认识 flume 1 flume 是什么 这里简单介绍一下 它是 Cloudera 的一个产品 2 flume 是干什么的 收集日志的 3 flume 如何搜集日志 我们把...
在大数据处理领域,Flume和Elasticsearch是两个重要的组件。Flume是Apache开发的一款用于收集、聚合和移动大量日志数据的工具,而Elasticsearch则是一个分布式、实时的搜索与分析引擎,广泛用于大数据的存储、检索和...
你可以通过Flume的日志输出来监控和调试你的配置。`flume.root.logger`设置可以调整日志级别,如上述命令所示,设置为`INFO`级别,日志将输出到控制台。 6. **Flume的高级特性**: - **多级处理**:Flume支持多级...
标题中的"flume和logstash.zip"是一个包含两个著名数据采集工具——Apache Flume和Logstash的压缩包。这两个工具都是大数据生态系统中的重要组件,主要用于日志管理和数据收集。 Apache Flume是一个分布式、可靠且...
Flume 的初始版本被称为 FlumeOG(Original Generation),随着功能的不断扩展和完善,Flume 在 2011 年经历了一次重大的重构,新版本被称为 FlumeNG(Next Generation),并正式纳入 Apache 项目。 **Flume 的特点...
### Flume解析和应用 #### 一、Flume概述 Flume是由Cloudera开发的一款分布式、可靠且可用的日志采集系统。它被设计用来高效地处理大量数据流,能够从多个源头收集数据并将其传输至不同的存储系统中。Flume支持...
Java 是 Flume 源码的主要编程语言,它提供了一套丰富的 API 和接口,使得我们可以方便地扩展 Flume 的功能。在拦截器开发中,我们通常需要实现 `org.apache.flume.interceptor.Interceptor` 接口。这个接口包含两个...
1. **Flume API**:提供了创建自定义Flume组件的接口和类,如`org.apache.flume.api.RPCClient`用于实现远程数据源,`org.apache.flume.sink.elasticsearch.ElasticSearchSink`则用于连接Elasticsearch。 2. **扩展...
Apache Flume 是一个分布式、可靠且可用的数据收集系统,用于高效地聚合、移动和加载大量日志数据到集中式存储系统,如Hadoop HDFS。它设计为容错性强,可扩展,允许从多个源收集数据,并将其流向目标,如数据仓库或...
Flume 是 Apache Hadoop 生态系统中的一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的工具。Log4j 是一个广泛使用的 Java 日志框架,它提供了灵活的日志记录配置,使得应用程序可以方便地输出不同级别...
Flume是一个由Cloudera公司开发的分布式、可靠且可用的系统,用于有效地收集、聚合和移动大量日志数据。它的设计灵感来源于一个古老的消息队列系统,但Flume在设计和功能上都有了显著的增强。Flume从1.5.0版本开始,...
在"电商数仓项目(八) Flume 系列源码"中,我们可以深入理解 Flume 的工作原理和内部机制。Flume 主要由三个核心组件构成:Source、Channel 和 Sink。Source 负责接收数据,Channel 作为临时存储,Sink 则负责将数据...
Flume 是 Apache 开源项目中的一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的工具。它设计的主要目标是简化大数据收集流程,确保数据的高可用性和高可靠性。在日志管理系统中,Flume 提供了多种数据源...