Flume的安装与使用

一:安装和使用

Flume 的 rpm 安装方式很简单,这里不做说明。
示例1: avro 数据源
安装成功之后,在 /etc/flume/conf 目录创建 f1.conf 文件,内容如下

agent-1.channels.ch-1.type = memory
agent-1.sources.avro-source1.channels = ch-1
agent-1.sources.avro-source1.type = avro
agent-1.sources.avro-source1.bind = 0.0.0.0
agent-1.sources.avro-source1.port = 41414
agent-1.sources.avro-source1.threads = 5
agent-1.sinks.log-sink1.channel = ch-1
agent-1.sinks.log-sink1.type = logger
agent-1.channels = ch-1
agent-1.sources = avro-source1**加粗样式**
agent-1.sinks = log-sink1

关于 avro-source 配置说明,请参考 avro-source
接下来启动 agent:

$ flume-ng agent -c /etc/flume-ng/conf -f /etc/flume-ng/conf/f1.conf
-Dflume.root.logger=DEBUG,console -n agent-1

参数说明:
-n 指定 agent 名称
-c 指定配置文件目录
-f 指定配置文件
-Dflume.root.logger=DEBUG,console 设置日志等级
下面可以启动一个 avro-client 客户端生产数据:

$ flume-ng avro-client -c /etc/flume-ng/conf -H localhost -p 41414 -F /etc/passwd
-Dflume.root.logger=DEBUG,console

示例2:spooldir 数据源

在 /etc/flume/conf 目录创建 f2.conf 文件,内容如下:

agent-1.channels = ch-1
agent-1.sources = src-1
agent-1.channels.ch-1.type = memory
agent-1.sources.src-1.type = spooldir
agent-1.sources.src-1.channels = ch-1
agent-1.sources.src-1.spoolDir = /root/log
agent-1.sources.src-1.fileHeader = true
agent-1.sinks.log-sink1.channel = ch-1
agent-1.sinks.log-sink1.type = logger
agent-1.sinks = log-sink1

关于 Spooling Directory Source 配置说明,请参考 SpoolingDirectory Source
接下来启动 agent

$ flume-ng agent -c /etc/flume-ng/conf -f /etc/flume-ng/conf/f2.conf
-Dflume.root.logger=DEBUG,console -n agent-1

然后,手动拷贝一个文件到 /root/log 目录,观察日志输出以及/root/log 目录下的变化

示例3:spooldir 数据源,写入 hdfs

在 /etc/flume/conf 目录创建 f3.conf 文件,内容如下

agent-1.channels.ch-1.type = file
agent-1.channels.ch-1.checkpointDir= /root/checkpoint
agent-1.channels.ch-1.dataDirs= /root/data
agent-1.sources.src-1.type = spooldir
agent-1.sources.src-1.channels = ch-1
agent-1.sources.src-1.spoolDir = /root/log
agent-1.sources.src-1.deletePolicy= never
agent-1.sources.src-1.fileHeader = true
agent-1.sources.src-1.interceptors =i1
agent-1.sources.src-1.interceptors.i1.type = timestamp
agent-1.sinks.sink_hdfs.channel = ch-1
agent-1.sinks.sink_hdfs.type = hdfs
agent-1.sinks.sink_hdfs.hdfs.path = hdfs://cdh1:8020/user/root/events/%Y-%m-%d
agent-1.sinks.sink_hdfs.hdfs.filePrefix = logs
agent-1.sinks.sink_hdfs.hdfs.inUsePrefix = .
agent-1.sinks.sink_hdfs.hdfs.rollInterval = 30
agent-1.sinks.sink_hdfs.hdfs.rollSize = 0
agent-1.sinks.sink_hdfs.hdfs.rollCount = 0
agent-1.sinks.sink_hdfs.hdfs.batchSize = 1000
agent-1.sinks.sink_hdfs.hdfs.writeFormat = text
agent-1.sinks.sink_hdfs.hdfs.fileType = DataStream
#agent-1.sinks.sink_hdfs.hdfs.fileType = CompressedStream
#agent-1.sinks.sink_hdfs.hdfs.codeC = lzop
agent-1.channels = ch-1
agent-1.sources = src-1
agent-1.sinks = sink_hdfs

关于 HDFS Sink 配置说明,请参考 HDFS Sink

说明:

通过 interceptors 往 header 里添加 timestamp,这样做,可以在 hdfs.path 引用系统内部的时间变量或者主机的 hostname。通过设置 hdfs.inUsePrefix,例如设置为 .时,hdfs 会把该文件当做隐藏文件,以避免在 mr 过程中读到这些临时文件,引起一些错误
如果使用 lzo 压缩,则需要手动创建 lzo 索引,可以通过修改HdfsSink 的代码,通过代码创建索引FileChannel 的目录最好是和 spooldir 的数据目录处于不同磁盘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值