Flume 扇入(fanin)扇出(fanout)案例

本文详细介绍了两个Flume使用案例,包括多Flume实例汇总数据到单Flume(扇入)以及单Flume数据传递给多个目的地(扇出)。在扇入案例中,flume-fanin-1和flume-fanin-2分别监控不同源,数据最终由flume-fanin-3写入HDFS。扇出案例中,flume-fanout-1监控文件变动,数据同时传递给flume-fanout-2(存储到HDFS)和flume-fanout-3(输出到本地目录)。

案例三、Flume 与 Flume 之间数据传递,多 Flume 汇总数据到单 Flume。

1

目标:flume-fanin-1监控某一个端口的数据流,flume-fanin-2 监控文件,flume-fanin-1 和 flume-fanin-2 将数据发送给 flume-fanin-3,flume-fanin-3 将最终数据写入到HDFS。
分步实现
1.创建 flume-fanin-1.conf,用于监控端口 55555,同时 sink 数据到 flume-fanin-3

# 1 agent
a1.sources = netcat-a1
a1.sinks = avro113
a1.channels = c1

# 2 source
a1.sources.netcat-a1.type = netcat
a1.sources.netcat-a1.bind = bigdata111
a1.sources.netcat-a1.port = 55555

#3 sink
a1.sinks.avro113.type = avro
a1.sinks.avro113.hostname = bigdata113
a1.sinks.avro113.port = 4141

# 4 channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 5 Bind
a1.sources.netcat-a1.channels = c1
a1.sinks.avro113.channel = c1

2.创建 flume-fanni-2.conf 用于监控文件,同时 Sink 到 flume-fan

### Apache Flume 扇入配置概述 Apache Flume 是一种分布式的、可靠的、高可用的服务,用于高效地收集、聚合和移动量日志数据。其支持多种拓扑结构,其中 **扇入** 是指从多个数据源采集数据并将其汇聚到单个 Flume 实例中[^1]。 以下是实现 Flume 扇入的一个典型配置示例: #### 配置文件示例 以下是一个简单的 `flume-conf.properties` 文件,展示了如何通过两个独立的数据源(Source A 和 Source B)将数据汇聚到同一个 Channel 中,并最终写入 HDFS 或其他目标存储系统。 ```properties # 定义 agent 的组件名称 agent.sources = sourceA sourceB agent.channels = channel1 agent.sinks = sink1 # 配置 Source A (例如:监听端口 44444) agent.sources.sourceA.type = netcat agent.sources.sourceA.bind = localhost agent.sources.sourceA.port = 44444 # 配置 Source B (例如:监听端口 55555) agent.sources.sourceB.type = netcat agent.sources.sourceB.bind = localhost agent.sources.sourceB.port = 55555 # 配置 Channel (内存通道) agent.channels.channel1.type = memory agent.channels.channel1.capacity = 1000 agent.channels.channel1.transactionCapacity = 100 # 将 Sources 连接到同一 Channel agent.sources.sourceA.channels = channel1 agent.sources.sourceB.channels = channel1 # 配置 Sink (例如:写入本地文件系统) agent.sinks.sink1.type = file_roll agent.sinks.sink1.channel = channel1 agent.sinks.sink1.sink.directory = /tmp/flume/events ``` 上述配置实现了如下功能: - 创建了两个 NetCat 类型的 Source (`sourceA` 和 `sourceB`),分别绑定到不同的端口上接收外部输入。 - 使用了一个共享的 Memory Channel (`channel1`) 来缓存来自这两个 Source 的事件。 - 数据最终会被写入指定目录 `/tmp/flume/events` 下的文件中。 这种设计模式正是典型的 “扇入” 架构——多条数据流汇集成一条统一的数据流[^2]。 #### 关键点说明 1. **Channel 共享机制**: 多个 Source 可以连接至相同的 Channel,从而实现数据汇聚的目的。 2. **负载均衡与可靠性**: 如果某些 Source 发生故障,则不影响整个系统的运行状态;同时可以通过增加更多的 Source 提升吞吐量。 3. **实际应用场景**: 假设某电商平台希望监控全国各地服务器产生的访问日志,并集中上传至 Hadoop 平台做进一步分析,在此情况下就可以采用类似的扇入方式来完成任务[^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值