flume-ng-extends

本文介绍如何使用Flume-ng-extends监听指定目录的文件写入事件,并触发数据收集流程。首先需要从GitHub获取源代码并编译打包。接着通过配置Agent来指定监听的目录路径,配置Sink为Logger类型以便于查看输出日志。

这个可以taildir文件,监听文件目录写入事件,只要往这个目录写入文件就能触发

首先需要flume-ng-extends:从获取源代码   https://github.com/jinoos/flume-ng-extends,maven编译打包

将flume-ng-extends-0.0.1-SNAPSHOT.jar,另外还要下载commons-vfs2-2.0.jar这个jar包(这个不然可能会报错)一起放到flume的lib下

2,agent配置

hadoop@stormspark:~/bigdata/flume-1.4.0-bin/dirTailTest$ cat ../conf/flume-ng-extend.properties 
a.sources = sources
a.sinks = sinks
a.channels = c

#configure sources
a.sources.sources.type = com.jinoos.flume.DirectoryTailSource
a.sources.sources.dirs = s0 s1
a.sources.sources.dirs.s0.path = /home/hadoop/bigdata/flume-1.4.0-bin/dirTailTest/s0in
a.sources.sources.dirs.s1.path = /home/hadoop/bigdata/flume-1.4.0-bin/dirTailTest/s1in
#congfigure sinks
a.sinks.sinks.type = logger
#configure channals
a.channels.c.type = memory
#bind channel
a.sources.sources.channels = c
启动这个agent

bin/flume-ng agent --conf conf  --conf-file conf/flume-ng-extend.properties --name a -Dflume.root.logger=INFO,console
然后往s0in,s1in目录丢进去一些文件

cp ../conf/*.properties  ./s1in/

可以看到已经触发了

2014-01-17 20:29:35,774 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:110)] Monitoried counter group for type: SOURCE, name: sources, registered successfully.
2014-01-17 20:29:35,774 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:94)] Component type: SOURCE, name: sources started
2014-01-17 20:29:53,314 (pool-3-thread-2) [WARN - com.jinoos.flume.DirectoryTailSource$WorkerRunnable.fileChanged(DirectoryTailSource.java:417)] /home/hadoop/bigdata/flume-1.4.0-bin/dirTailTest/s1in/flume-ng-extend.propertiesis not in monitoring list.
2014-01-17 20:29:53,812 (pool-3-thread-5) [WARN - com.jinoos.flume.DirectoryTailSource$WorkerRunnable.fileCreated(DirectoryTailSource.java:341)] Occurred create event from un-indexed directory. ///home/hadoop/bigdata/flume-1.4.0-bin/dirTailTest/s1in
2014-01-17 20:29:53,812 (pool-3-thread-4) [WARN - com.jinoos.flume.DirectoryTailSource$WorkerRunnable.fileCreated(DirectoryTailSource.java:341)] Occurred create event from un-indexed directory. ///home/hadoop/bigdata/flume-1.4.0-bin/dirTailTest/s1in
2014-01-17 20:29:53,812 (pool-3-thread-6) [WARN - com.jinoos.flume.DirectoryTailSource$WorkerRunnable.fileCreated(DirectoryTailSource.java:341)] Occurred create event from un-indexed directory. ///home/hadoop/bigdata/flume-1.4.0-bin/dirTailTest/s1in
2014-01-17 20:29:53,812 (pool-3-thread-3) [WARN - com.jinoos.flume.DirectoryTailSource$WorkerRunnable.fileCreated(DirectoryTailSource.java:341)] Occurred create event from un-indexed directory. ///home/hadoop/bigdata/flume-1.4.0-bin/dirTailTest/s1in
2014-01-17 20:29:53,812 (pool-3-thread-7) [WARN - com.jinoos.flume.DirectoryTailSource$WorkerRunnable.fileCreated(DirectoryTailSource.java:341)] Occurred create event from un-indexed directory. ///home/hadoop/bigdata/flume-1.4.0-bin/dirTailTest/s1in



提供的引用内容未涉及使用Flume结合MyBatis-Plus实现数据入库的相关信息。不过,可从一般性的技术原理出发给出操作步骤与示例。 Flume是一个分布式、可靠、可用的系统,用于高效地收集、聚合和移动大量的日志数据。MyBatis-Plus是MyBatis的增强工具,简化了对数据库的操作。要使用Flume结合MyBatis-Plus实现数据入库,可按以下步骤操作: ### 1. 环境准备 确保已经添加Flume、MyBatis-Plus、数据库驱动等依赖。若使用Maven,可在`pom.xml`中添加如下依赖: ```xml <dependencies> <!-- Flume --> <dependency> <groupId>org.apache.flume</groupId> <artifactId>flume-ng-core</artifactId> <version>1.9.0</version> </dependency> <!-- MyBatis-Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.4</version> </dependency> <!-- 数据库驱动,以MySQL为例 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies> ``` ### 2. 配置MyBatis-Plus 在Spring Boot项目的配置文件`application.properties`或`application.yml`中配置数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database username: your_username password: your_password driver-class-name: com.mysql.cj.jdbc.Driver ``` 创建实体类和Mapper接口: ```java import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("your_table") public class YourEntity { private Long id; private String name; // 其他字段 } ``` ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface YourEntityMapper extends BaseMapper<YourEntity> { } ``` ### 3. 自定义Flume Sink 自定义一个Flume Sink,在其中使用MyBatis-Plus将数据插入数据库: ```java import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.flume.*; import org.apache.flume.conf.Configurable; import org.apache.flume.sink.AbstractSink; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.nio.charset.StandardCharsets; @Component public class MyBatisPlusSink extends AbstractSink implements Configurable { @Autowired private YourEntityMapper yourEntityMapper; @Override public void configure(Context context) { // 配置逻辑 } @Override public Status process() throws EventDeliveryException { Channel channel = getChannel(); Transaction transaction = channel.getTransaction(); transaction.begin(); try { Event event = channel.take(); if (event != null) { String data = new String(event.getBody(), StandardCharsets.UTF_8); // 解析数据并创建实体对象 YourEntity entity = new YourEntity(); entity.setName(data); // 使用MyBatis-Plus插入数据 yourEntityMapper.insert(entity); } transaction.commit(); return Status.READY; } catch (Exception e) { transaction.rollback(); return Status.BACKOFF; } finally { transaction.close(); } } } ``` ### 4. 配置FlumeFlume的配置文件中配置Source、Channel和自定义的Sink: ```properties # 定义组件名称 agent.sources = r1 agent.channels = c1 agent.sinks = k1 # 配置Source agent.sources.r1.type = netcat agent.sources.r1.bind = localhost agent.sources.r1.port = 44444 # 配置Channel agent.channels.c1.type = memory agent.channels.c1.capacity = 1000 agent.channels.c1.transactionCapacity = 100 # 配置Sink agent.sinks.k1.type = com.example.MyBatisPlusSink agent.sinks.k1.channel = c1 # 将Source和Sink连接到Channel agent.sources.r1.channels = c1 agent.sinks.k1.channel = c1 ``` ### 5. 启动Flume和应用程序 启动Spring Boot应用程序,确保MyBatis-Plus和数据库连接正常。然后启动Flume: ```sh bin/flume-ng agent --conf conf --conf-file conf/flume.conf --name agent -Dflume.root.logger=INFO,console ``` 通过以上步骤,Flume收集到的数据就会通过自定义的Sink使用MyBatis-Plus插入到数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值