https://flume.liyifeng.org/
一、flume是什么
Apache Flume是Apache软件基金会(ASF)的顶级项目,目前有两个发行版本,0.9.x和1.x
Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregating and moving large amounts of log data from many different sources to a centralized data store(Flume 是一个分布式、高可靠、高可用,用来收集、聚合、转移不同来源的大量日志数据到中央数据仓库的工具)
二、flume数据流模型
Event是flume数据流传输的最小数据单元,每个Event包含一个完整的agent;
每个agent都是flume的一个实例,实质是一个jvm进程,控制外部输入数据流到目的地(或者下一个agent)
Flume使用事务来保证Event的 可靠传输。Source和Sink对channel提供的每个Event数据分别封装一个事务用于存储和恢复,这样就保证了数据流的集合在点对点之间的可靠传输。在多层架构的情况下,来自前一层的sink和来自下一层的Source 都会有事务在运行以确保数据安全地传输到下一层的Channel中
agent组成:
· source(数据来源)---Source负责消费外部传递给它的数据。外部的数据生产方以Flume Source识别的格式向Flume发送Event
· channel(缓冲池) ---1、channel用来保证数据的可靠传输的;Event会在每个Agent的Channel上进行缓存,随后Event将会传递到流中的下一个Agent或目的地(比如HDFS)。只有成功地发送到下一个Agent或目的地后Event才会Channel中删除。这一步保证了Event数据流在Flume Agent中传输时端到端的可靠性
2、实现数据流入和流出的异步执行(Agent中的source和sink与channel存取Event是异步
3、Event数据会缓存在Channel中用来在失败的时候恢复出来。Flume支持保存在本地文件系统中的文件channel,也支持保存在内存中的Channel,内存Channel显然速度会更快,缺点是Agent挂掉内存Channel中缓存的数据也就丢失了。
· sink(数据输出方式和目的地)