flume的运行机制
source:对接我们的数据源,用于我们采集数据
channel:管道,连接我们的soruce以及sink
sink:数据的下沉组件,主要用于将数据发送到哪里去保存
flume == > kafka 实现实时的处理
flume ==》 hdfs 实现离线的处理
agent:一个flume的运行的实例,就是一个agent
event:一条数据就是一个event
flume这个玩意儿比较脆弱,一旦抛异常之后,flume就不会干活儿了
1:flume有没有做什么监控 ==》监控flume有没有挂掉
挂掉跟不挂掉:如果挂掉会产生两个现象:第一个:源文件没有收集 第二个:hdfs的目的文件没有增多
可以使用以上两个特性,来检测flume有没有挂掉 源文件一直在增多 ,没有产生更多的.complete文件,就证明源文件没有收集
可以使用shell脚本定时的检测一下==》查看一下源文件有没有收集,查看目的文件有没有增多
如果shell脚本检测到flume挂掉怎么办??如果是监控一个文件夹,重启解决不了问题,将我们监控文件夹下面的所有的文件全部移走,然后重新启动flume即可
也可以用第三方软件Ganglia来做监控。
2:flume的滚动频率:多长时间发送一次数据到hdfs上面去
使用flume来实现离线数据的处理
一般一个文件滚动生成128M比较合适
一条文件大概多大 100KB 128M/100KB
白天12个小时产生100Gb文件 100GB/12小时 每个小时多少GB的文件
agent1.sinks.sink1.hdfs.rollSize = 102400 配置128M agent1.sinks.sink1.hdfs.rollCount = 1000000 控制多少条event滚动一次 agent1.sinks.sink1.hdfs.rollInterval = 60 多长时间滚动一次,根据你每天的数据量来估算出来的
flume当中的source 以及sink组件
source EXEC source spooling directory source avro source netcast source
sink:avro sink hdfs sink kafka sink logger sink
channel: memory channel 有可能丢失数据 File Channel 可以将我们的数据保存到文件里面去,涉及到flume的事务问题
调研了解 flume采集mysql里面的数据(todo)
flume当中的高可用有两种机制
一种是 failover(主备) 一种是load balance(高可用)