一个高可用(稳定),高可靠(稳定),分布式的海量日志采集,聚合和传输的系统。Flume基于流式架构,灵活简单。日志文件即txt文件,不能传输音频,视频,office等其他文件。Flume最主要的作用是实时读取服务器本地磁盘的数据,将数据写入到HDFS。
Web Server一般为java后台程序
Agent
文件系统:比如HDFS,传输的终点
Event: Flume数据传输的基本单元
<Properties>
<Property name="LOG_DIR">/opt/module/flume/logsProperty>
Properties>
sudo yum install -y nc
nc -lk 端口号
,监听端口nc localhost 44444
连接端口flume configuration
文件# 给组件命名,默认 agent 叫 a1
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 配置 source 的类型、主机名、端口号
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# 配置 sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000 # 1000个event
a1.channels.c1.transactionCapacity = 100 # 批次大小,达到该值就发送
# 绑定 the source and sink to the channel
a1.sources.r1.channels = c1 # source可以连多个channel
a1.sinks.k1.channel = c1 # sink不能连多个channel
发送者_flume_接收者.conf
bin/flume-ng agent -c conf/ -f-file job/nc_flume_log.conf -n a1
echo >> file1.txt
bin/flume-ng agent -c conf/ -f-file job/taildir_flume_log.conf -n a1
taildir_position.json
在Source和Channel之间有事务来保证put操作的完整性。source能够保证数据没有提交成功时,不会修改当前发送数据的偏移量,只有当source成功将数据放到channel中时,source才会更新当前的偏移量。当channel内存空间不足时,即put失败,会回滚数据,即不更新当前数据的偏移量。
在channel和sink节点之间进行的拉取操作也有可能失败,只有当数据成功放到sink中,才会将channl中的数据进行删除。否则,事务会将数据回滚到数据还未拉取前的状态,来保证数据的不丢失性。
由于都在同一机器上运行,后两种处理器没有任何意义
如果有flume的连接传输,启动时需要先开启下游flume,再开启上游flume。关闭时需要先关闭上游flume,再关闭下游flume。