flume

一.Flume架构

flume是通过flume agent进行数据的采集、传送工作的。Flume agent可以理解为flume中的一个基本单元,它包含source、channel、sink三个部分。

Source用于数据采集工作,将采集到的数据传送到channel中。

Channel是一个通道,连接source和sink,用于数据的传送。

Sink用来消费channel中的数据,可以将数据持久化或者将数据传送给另一个source。

二.Flume Agent

FlumeAgent包含三个部分,Source、Channel和Sink。

1.Source

Agent Source可以有很多种类,比如Avro Source、Thrift Source、Exec Source、Kafka Source、Http Source,以及自定义Source等。可以根据不同的场景选用合适的Source。

2.Channel

Channel同样有很多的种类,比如Memory Channel、JDBC Channel、Kafka Channel、File Channel等。同样也可以自定义Channel。

3.Sink

Sink也是有很多种类,包括HDFS Sink、Hive Sink、Logger Sink、Avro Sink、Kafka Sink、Http Sink、ElasticSearch Sink等等,同样可以根据需要自定义Sink。

三.如何自定义Source

首先创建一个java工程,引入flume依赖包。

<dependency>

   <groupId>org.apache.flume</groupId>

   <artifactId>flume-ng-core</artifactId>

   <version>1.8.0</version>

</dependency>

<dependency>

   <groupId>org.apache.flume</groupId>

   <artifactId>flume-ng-configuration</artifactId>

   <version>1.8.0</version>

</dependency>

<dependency>

   <groupId>org.apache.flume</groupId>

   <artifactId>flume-ng-sdk</artifactId>

   <version>1.8.0</version>

</dependency>

然后创建java类,继承AbstractSource、实现Configurable、PollableSource接口。

PollableSource接口代表该Source是轮询拉取类型。我们也可以创建事件驱动类型的Source,实现EventDriveSource即可。两者的区别在于PollableSource是通过线程不断去调用process方法,主动拉取消息,而EventDrivenSource是需要触发一个调用机制,即被动等待。实现Configurable接口,以便在项目中初始化某些配置用的。

然后将我们打的jar包放到flume的lib目录下,如果有依赖jar包,也需要将依赖包放在lib目录下,如果有配置文件,需要在flume的bin目录中将配置文件或文件夹放进去,因为我们flume的启动入口就是bin目录下面的flume-ng文件。

接下来编写flume配置文件。将source类型定义为我们自定义的source。如下:

# 指定Agent的组件名称
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 指定Flume source(要监听的路径)
a1.sources.r1.type = com.cloudwise.bd.flume.source.MySource
# 指定Flume sink
a1.sinks.k1.type = file_roll
a1.sinks.k1.sink.directory = /Users/aladdin/flume-test/flume-source
# 指定Flume channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000
# 绑定source和sink到channel上
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

然后就可以启动flume程序了。进入flume目录,然后执行以下命令:

bin/flume-ng agent –c conf –f conf/test-mysource.conf –n a1

agent 代表的是我们要创建一个flume agent。

-c 用于指定配置文件目录

-f 指定使用的配置文件

-n 是启动的agent的名称,需要和配置文件中的agent名称一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值