flume是一个高可用的,高可靠的,分布式的海量日志采集,聚合和传输的系统,flume支持在日志系统中定制各类数据发送方,用于收集数据;flume提供对数据进行简单的处理,并写到各种数据接受方(可定制)的能力。
flume 0.9x版本之前的统称为flume-og,flume 1.x之后的版本统称为flume-ng
flume运行必须安装JDK-6.0以上的版本,并且flume目前只有linux启动脚本。
Flume框架对hadoop和zookeeper的依赖只是在jar包上,并不要求flume启动时必须将hadoop和zookeeper服务也启动。
1.1 体系架构
Flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。
Flume以agent为最小的独立运行单位。一个agent就是一个JVM。单agent由Source、Sink和Channel三大组件构成,如下图
flume有三种角色的节点,代理节点(agent),收集节点(collector),主节点(master).
agent从各个数据源收集日志数据,将收集到的数据集中到 collector,然后由收集节点汇总存入 hdfs。master负责管理 agent,collector的活动。