flume taildirsource kafka chnanel hadf sink 配置文件

本文详细描述了三台机器之间的数据流程,包括两台Flume采集日志并发送到Kafka,一台Flume将Kafka数据迁移到HDFS进行持久化存储。配置涉及TAILDIR源、Kafka通道、HDFSSink及文件滚动策略。

3台机器,2台 flume 往kafka里面采集,一台从kafka里面拿 放到hafs里面
第一台机器

大概是
在这里插入图片描述

#taildir source
#为各个组件命名
a1.sources = r1
a1.channels = c1
#声明source
a1.sources.r1.type = TAILDIR
a1.sources.r1.filegroups = f1
#监控的目录
a1.sources.r1.filegroups.f1 = /log/app.*
#开启断点续传,不配置 默认开启
a1.sources.r1.positionFile= /flume/taildir_position.json

#拦截器
a1.sources.r1.interceptors = i1 
a1.sources.r1.interceptors.i1.type = com.log.interceptor.LogEtlInterceptor$Mybuilder
#kafka channel 
#channels
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = kafkaip地址:9092,kafkaip地址:9092,kafkaip地址:9092
a1.channels.c1.kafka.topic = topic_log
a1.channels.c1.parseAsFlumeEvent = false

#绑定source和channel以及sink和channel的关系
a1.sources.r1.channels = c1

第二台机器配置,与第一台相同

第三天机器配置

a1.channels = c1
a1.sinks= k1

#channels
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092,hadoop104:9092
a1.channels.c1.kafka.topic = topic_log
a1.channels.c1.parseAsFlumeEvent = false
#hdfs sink 
# sink1
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /origin_data/gmall/log/topic_log/%Y-%m-%d
a1.sinks.k1.hdfs.filePrefix = a-
#设置文件夹滚动,假设有header里面有 timestamp字段,(timestamp 字段是在source 拦截器里面设置的)可以 设置为false,没有的话必须开启这个,用本地时间
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 1
a1.sinks.k1.hdfs.roundUnit = hour
a1.sinks.k1.hdfs.useLocalTimeStamp = true
# 设置文件滚动,防止产生过多小文件
a1.sinks.k1.hdfs.rollInterval = 100
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0

a1.sinks.k1.channel = c1
### 配置 Flume TailDirSource #### 一、理解TailDirSource的工作原理 TailDirSource 是一种用于监控多个文件并实时读取新增内容的数据源。它能够通过指定路径和正则表达式来识别目标文件,并持续跟踪这些文件的新数据,适用于日志文件或其他不断更新的文本文件流处理场景[^2]。 #### 二、创建Flume配置文件 为了设置TailDirSource,在`taildir-hdfs.conf`这样的配置文件中定义相应的参数是非常重要的。下面是一个简单的例子: ```properties # 定义Agent名称及其组件类型 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 设置sourceTailDirSource a1.sources.r1.type = TAILDIR a1.sources.r1.positionFile = /path/to/position/file # 记录每个被监视文件当前读取位置的状态文件 a1.sources.r1.filegroups = f1 a1.sources.r1.filegroups.f1 = /var/log/test1/\d{8}/.*\.log$ # 使用正则表达式匹配要监听的日志文件路径模式;这里假设日期格式为YYYYMMDD形式存放在test1子目录下的所有.log结尾文件都会被捕获 # 可选属性:忽略已经存在的旧记录,默认false表示不跳过现有内容而从头开始读取 #a1.sources.r1.ignoreExisting = true # Sink部分可以根据实际需求调整,比如发送至HDFS等存储系统 a1.sinks.k1.type = hdfs a1.sinks.k1.hdfs.path = hdfs://namenode:8020/user/flume/taildir_data/ a1.sinks.k1.hdfs.filePrefix = logs- a1.sinks.k1.hdfs.round = true a1.sinks.k1.hdfs.roundValue = 10 a1.sinks.k1.hdfs.roundUnit = minute # Channel连接sourcesink a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # 绑定source, sink 和 channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 ``` 上述配置展示了如何利用TailDirSource配合其他组件完成基本的任务设定,其中特别注意的是对于filegroups以及其对应的pattern定义,这决定了哪些文件会被纳入到监控范围内[^1]。 #### 三、部署前准备事项 确保所有的依赖库都已正确安装于集群环境中,特别是当自定义拦截器或者其他扩展功能时可能需要用到额外的JAR包。如果是在Cloudera Manager管理的环境下,则应该按照官方指导将必要的资源放置在适当的位置,例如 `/opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/flume-ng/lib/` 下面[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值