目录
flume应用
-
flume概述
-
定义
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。
-
基础架构
agent是一个JVM进程,三个部分Source,Channel,Sink
-
-
flume入门
-
配置文件
-
上官网搜索对应的组件的写法
-
-
启动参数说明
bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/nc-flume-log.conf -Dflume.root.logger=INFO,console
--conf/-c:表示配置文件存储在conf/目录
--name/-n:表示给agent起名为a1
--conf-file/-f:flume本次启动读取的配置文件是在conf文件夹下的nc-flume-log.conf文件。
-Dflume.root.logger=INFO,console :-D表示flume运行时动态修改flume.root.logger参数属性值,并将控制台日志打印级别设置为INFO级别。日志级别包括:log、info、warn、error。日志参数已经在配置文件中修改了,不再需要重复输入。
-
监控端口数据官方案例
-
实时监控目录下的多个追加文件
Taildir说明:
Taildir Source维护了一个json格式的position File,其会定期的往position File中更新每个文件读取到的最新的位置,因此能够实现断点续传。
{"inode":2496272,"pos":12,"file":"/opt/module/flume/files/file1.txt"}
其中inode为linux中存储元数据的区域,用inode识别文件,而taildir source 会根据inode与文件全路径进行匹配,如果不是两者都一致,且source的表达式能匹配上,则会进行断点续传,有重复的数据产生
-
-
flume进阶
ChannelSelector有两种:Replicating(复制)和Multiplexing(多路复用)。
SinkProcessor共有三种类型:DefaultSinkProcessor对应的是单个的Sink,LoadBalancingSinkProcessor和FailoverSinkProcessor对应的是Sink Group,LoadBalancingSinkProcessor可以实现负载均衡的功能,轮循发往指定的sink;FailoverSinkProcessor可以错误恢复的功能,只有优先级高的出错时才发往备用的sink
-
事务
-
内部原理
-
-
flume数据流监控
-
操作flume监控
-
主要监控四个指标参数:
EventPutAttemptCount source尝试写入channel的事件总数量 EventPutSuccessCount 成功写入channel且提交的事件总数量 EventTakeAttemptCount sink尝试从channel拉取事件的总数量。 EventTakeSuccessCount sink成功读取的事件的总数量
-
-
flume问题
flume会丢数据吗?
答:正常情况不会丢数据!
根据Flume的架构原理,Flume是不可能丢失数据的,其内部有完善的事务机制,Source到Channel是事务性的,Channel到Sink是事务性的(put事务与take事务),因此这两个环节不会出现数据的丢失,唯一可能丢失数据的情况是Channel采用memoryChannel,由于是存储在内存中的,如果agent宕机导致数据丢失,或者Channel存储数据已满,导致Source不再写入,未写入的数据丢失。
虽然正常使用不会造成数据丢失,但是可能会造成数据重复.
如果数据已经成功由Sink发出,但是没有接收到响应,Sink会再次发送数据,此时可能会导致数据的重复。在flume内部是不会存在数据重复的问题(被事务包含).