`

征服flume之一——flume-NG的编译

 
阅读更多
关于flume NG
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。

flume的特点
  flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。
  flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

flume的可靠性
  当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Besteffort(数据发送到接收方后,不会进行确认)。

flume的可恢复性
  还是靠Channel。推荐使用FileChannel,事件持久化在本地文件系统里(性能较差)。

  flume的一些核心概念:
Agent        使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。
Client        生产数据,运行在一个独立的线程。
Source        从Client收集数据,传递给Channel。
Sink        从Channel收集数据,运行在一个独立线程。
Channel        连接 sources 和 sinks ,这个有点像一个队列。
Events        可以是日志记录、 avro 对象等。


本文是征服flume系列文章的第一篇,编译flume-NG。
一、下载flume-ng源码
git clone git://git.apache.org/flume.git

或者到官网通过http方式下载zip包

二、编译过程中可能遇到的问题
1、Missing artifact jdk.tools:jdk.tools:
flume-hdfs-sink等包中可能会报该异常,只需要在pom.xml中添加一下依赖即可

		<dependency>
			<groupId>jdk.tools</groupId>
			<artifactId>jdk.tools</artifactId>
			<version>1.7</version>
			<scope>system</scope>
			<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
		</dependency>

2、ua-parser-1.3.0.jar
这个jar包我尝试了几个不同的地址,均未能正常下载,遂自己下载了一份源码打了jar包
https://github.com/tobie/ua-parser/
当然,大家也可以尝试一下一下地址
<repository>
  <id>maven.tempo-db.com</id>
  <url>http://maven.tempo-db.com/artiferactory/list/twitter/</url>
</repository>

3、其他jar包
之后的编译过程中,还遇到了其他jar包无法正常加载的情况,主要有org.restlet.ext.servlet-2.1.1.jar、pentaho-aggdesigner-algorithm-5.1.3-jhyde.jar等,这些jar包都可以从一下地址找到!
http://conjars.org/repo/
http://repository.pentaho.org/artifactory/repo/
4、缺少class文件的问题
如果你使用eclipse或者其他ide打开flume项目,你会发现有几个类找不到,例如:
org.apache.flume.source.avro.AvroFlumeEvent
com.cloudera.flume.handlers.avro.FlumeOGEventAvroServer
com.cloudera.flume.handlers.avro.AvroFlumeOGEvent
等等,这些class其实是通过src路径下的avdl文件生成的。(具体生成过程我还没研究)

三、执行编译命令
mvn clean install -DskipTests

由于受环境和配置参数影响,需要跳过测试,不然部分测试代码执行不成功。

四、执行结果

执行完成后,将在flume-ng-dist文件夹的target目录下生成apache-flume-1.7.0-SNAPSHOT-bin等文件夹,apache-flume-1.7.0-SNAPSHOT-bin文件夹下的文件即可直接拿来使用
  • 大小: 28.4 KB
分享到:
评论

相关推荐

    flume-ng-sql-source-1.5.2

    Flume-ng-sql-source-1.5.2是Apache Flume的一个扩展,它允许Flume从SQL数据库中收集数据。Apache Flume是一个分布式、可靠且可用于有效聚合、移动大量日志数据的系统。"ng"代表"next generation",表明这是Flume的...

    flume-ng-sql-source-release-1.5.2.zip

    Flume-ng-sql-source是Apache Flume的一个扩展插件,主要功能是允许用户从各种数据库中抽取数据并将其传输到其他目的地,如Apache Kafka。在本案例中,我们讨论的是版本1.5.2的发布包,即"flume-ng-sql-source-...

    flume-ng-sql-source-1.5.2.jar

    flume-ng-sql-source-1.5.2.jar从数据库中增量读取数据到hdfs中的jar包

    flume-ng-sql-source-1.5.3.jar

    flume-ng-sql-source-1.5.3.jar,flume采集mysql数据jar包,将此文件拖入FLUME_HOME/lib目录下,如果是CM下CDH版本的flume,则放到/opt/cloudera/parcels/CDH-xxxx/lib/flume-ng/lib下,同样需要的包还有mysql-...

    flume-ng-sql-source-1.5.1

    flume-ng-sql-source-1.5.1 flume连接数据库 很好用的工具

    flume-ng安装

    Flume-NG 是一个分布式日志收集系统,能够从各种数据源中实时采集数据,并将其传输到集中式存储系统中。本文将指导您完成 Flume-NG 的安装和基本配置。 安装 Flume-NG 1. 先决条件:Java JDK 安装 在安装 Flume-...

    Flume-ng-1.6.0-cdh.zip

    Flume-ng-1.6.0-cdh.zip 内压缩了 3 个项目,分别为:flume-ng-1.6.0-cdh5.5.0.tar.gz、flume-ng-1.6.0-cdh5.7.0.tar.gz 和 flume-ng-1.6.0-cdh5.10.1.tar.gz,选择你需要的版本。

    flume-ng-1.5.0-cdh5.3.6.rar

    flume-ng-1.5.0-cdh5.3.6.rarflume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume...

    flume-ng-sql-source-1.4.3.jar

    Flume-ng-sql-source-1.4.3.jar 是Apache Flume的一个扩展组件,它为Flume提供了与SQL数据库交互的能力。Flume是Apache Hadoop生态体系中的一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的工具。它设计...

    flume-ng-1.6.0-cdh5.5.0.tar.gz

    "flume-ng-1.6.0-cdh5.5.0.tar.gz" 是 Apache Flume 的一个特定版本,具体来说是 "Next Generation" (ng) 版本的 1.6.0,与 Cloudera Data Hub (CDH) 5.5.0 发行版兼容。CDH 是一个包含多个开源大数据组件的商业发行...

    flume-ng-sql-source.jar

    flume是一个日志收集器,更多详细的介绍可以参照官网:http://flume.apache.org/ flume-ng-sql-source实现oracle增量数据读取 有了这个jar文件即可从关系型数据库拉去数据到flume

    flume-ng-elasticsearch6-sink.zip

    flume1.9采集数据入存入elasticsearch6.2.4,flume1.9本身只支持低版本的elasticsearch,基于apache-flume-1.9.0-src的flume-ng-sinks/flume-ng-elasticsearch-sink源码修改,支持es6.2.4,打的包,直接替换flume/...

    flume-ng-sql-source

    包含flume-ng-sql-source-1.5.1&flume;-ng-sql-source-1.4.1 此内容均为网上下载

    flume-ng-hdfs-sink-1.7.0.jar

    flume-ng-hdfs-sink-1.7.0.jar,这个包里包含了flume和HDFS集成的所有类

    flume-ng-1.6.0 cdh5.7.0安装包

    该压缩包“flume-ng-1.6.0-cdh5.7.0”是针对Cloudera Data Hub (CDH) 5.7.0 平台的Flume的特定版本,"ng"代表"Next Generation",意味着它是Flume的更新版本,提供了更先进的特性和性能优化。CDH是一个完整的、经过...

    flume-ng-elasticsearch-sink-6.5.4.jar.zip

    `flume-ng-elasticsearch-sink-6.5.4.jar`正是这样一个插件,允许Flume将事件数据推送到Elasticsearch 6.5.4版本。这个jar文件包含所有必要的代码,使得Flume能够理解并处理Elasticsearch的相关配置和协议。 2. **...

    flume-ng-1.6.0-cdh5.14.2.tar.gz

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可...

Global site tag (gtag.js) - Google Analytics