Flume是一个开源的数据聚合和传输工具,它能够从远程Web服务器等多样化的源头收集和聚合大量的数据,并将其传输到一个中心位置。Flume以其简单灵活的设计而闻名,它基于流数据传输,具有容错性和鲁棒性,支持多种可靠性配置和故障恢复技术。
Apache Flume的主要组件包括源(Source)、通道(Channel)和汇(Sink)。当Flume的源从外部源接收到事件时,它会将事件存储在一个或多个通道中。Flume通道暂时存储并保留事件,直到Flume汇消费它们。汇从通道中移除事件并将其存储在外部存储库中,如HDFS,或者将其传输到下一个Flume。
在大数据领域,有多种工具被广泛使用,包括:
Apache Flume可以连接到两种HBase汇:
HBaseSink的工作方式是将Flume事件转换为HBase增量或放置。序列化器实现HBaseEventSerializer,在汇开始运行时实例化。对于每个事件,汇在序列化器中调用initialize方法,然后将Flume事件转换为HBase增量并放置,以便发送到HBase集群。AsyncHBaseSink的工作方式是实现AsyncHBaseEventSerializer。汇仅在启动时使用一次initialize函数。汇调用setEvent方法,然后调用getIncrements和getActions方法,类似于HBase汇。当汇停止时,序列化器调用cleanUp函数。
Flume被Hadoop开发者频繁使用,以从社交媒体网站获取数据。Cloudera创建了Flume,用于收集和传输大量数据。主要应用是从各种来源收集日志文件,并异步地将它们持久化到Hadoop集群中。
Flume NG利用基于通道的事务来确保消息传递的可靠性。当消息从一个代理传递到另一个代理时,会启动两个事务:一个在发送事件的代理上,另一个在接收事件的代理上。为了使发送代理能够提交其事务,它必须从接收代理那里收到成功指示。只有当其事务成功提交时,接收代理才会提供成功指示。这确保了在跃点之间的流具有保证的交付语义。