Flume1.9用户指南
介绍
概述:
Apache Flume是一个分布式的、可靠的、易获得的系统,用于从多个不同来源高效收集、聚合、移动大规模日志数据到一个中心化的数据仓库。
Apache Flume的作用不仅仅局限在日志数据的聚合,由于数据源是可定制的,Flume可以用于大量事件数据的传输,包括网络流量数据、社交媒体生成的数据、电子邮箱数据和许多可能的数据来源。
系统要求:
1、JRE-1.8及以上
2、内存-足够的内存用来配置sources、channels、sinks
3、磁盘空间-足够的磁盘空间用于配置channels、sinks
4、文件权限-agent拥有读写文件的权限
结构:
数据流模型:
Flume事件定义为具有字节有效负载和可选字符串属性集合的数据流单元。Flume代理是一个虚拟机进程,它承载着事件从一个外部来源流向下一个目标点的组件。
Flume source消费外部源(比如web server)传递给它的事件。外部源使用目标源能够识别的格式向Flume发送事件。比如,Avro(序列化) Flume源可以用于从Avro客户端或者从Avro sink发送事件的流中的其他Flume代理接收Avro事件。可以使用Thrift Flume Source 定义类似的流来从Thrift Sink或Flume Thrift RPC客户端或者Thrift客户端接收事件,这些客户端可以是Flume Thrift协议生成的任何语言编写的。当一个Flume Source接收到一个事件,source会把事件存在一个或多个channel中。channel是一个被动的存储器,他可以存储事件直到其被Flume sink消耗。比如file channel,它由本地文件系统支持。sink从channel中移除事件,并将其存储在一个外部存储库,比如HDFS(通过Flume HDFS sink)或者将其发送到流中下一个Flume代理的Flume source。给定代理中的source和sink与通道中暂存的事件异步进行。
复杂的流:
Flume允许用户建立一个多跃点的流,在这个流中,事件需要经过多个Flume代理才能到达最终目的地。Flume也允许扇入和扇出流、上下文路由和故障跳跃的备份路由(故障转移)。
可靠性:
事件运行在每个代理的channel中。然后将事件传递到流中的下一个代理或者终端存储库(HDFS)。事件只有在下一个代理的channel中运行后或存储在终端存储库之后才会从channel中移除。这就是Flume中单节点消息传递语义如何保证流中端到端的可靠性。
Flume使用事务方法来保证事件传递的可靠性。source和sink分别在事务中封装由信道提供的事务中放置或提供的事件的存储/检索。这确保了事件的集合可以可靠的从流中的一个点传递到另一个点。在多节点流中,前一个跃点到sink和后一个跃点到source运行着事务来确保数据安全的运行在下一个跃点到channel中。
可恢复性:
事件运行在channel中,channel管理从故障的回复,Flume支持持久文件channel,这由本地文件系统支撑。还有内存channel,它将事件简单点存储在内存队列中,这很快速,但是当代理进程死亡时仍在内存channel中的事件无法恢复。