Flume学习笔记 --- Flume架构介绍

1.数据流模型:

 

 

Flume event 被定义为具有字节有效负载和可选字符串属性集的数据流单元。Flume代理是一个(JVM)进程,它继承 event 从外部数据源流向下一个目标(跳跃hop)的组件。

Flume source 消耗由外部源(如web服务器)传递给它的event。外部source以目标Flume source识别的格式向Flume发送事件。

例如:Avro Flume源可以用于从Avro客户端或从Avro接收器发送事件的流中的其他Flume agent接收Avro event。可以使用Thrift Flume Source定义类似的流程,以接受来自Thrift Sink 或者Flume Thrift Rpc client。

当Flume源接收事件时,它将其存储到一个或多个channel。该channel是一个被动存储器,可以保存event直道它被Flume接收器消费。

文件通道就是一个例子。它由本地文件系统支持,接收器从通道中移除事件并将其放入外部存储库(如HDFS(通过Flume HDFS接收器))或将其转发到流中下一个Flume agent。

给定Agent中的source和sink与channel中的所有事件异步运行。

 

2.复杂的流:

Flume允许用户构建多跳multi-hop流,其中事件在到达最终目的地之前经过多个agent。 它还允许fan-in和fan-out,上下文路由和故障跳跃的备份路由(故障转移)。

 

3.可靠性:

Event 在每个agent中channel中,然后将evnet传递到流中的下一个agent或者终端存储库(HDFS)。只有将event存储在下一个agent的channel或者终端存储库后(被消费后),才会从channel中删除。这个就是Flume中的单跳消息传递语义如何提供流的end-to-end端到端的可靠性。

Flume使用事物(transactional)方法来保证event的可靠传递。source与sink分别在事务中封装了由信道提供的事务中放置或提供的事件的storafe/retrieval。

这可以确保event set 在流中从一个point-to-point的可靠传递。在多跳流的情况下,来自前一跳的sink和来自下一跳source都运行其事务以确保数据安全地存储在下一跳的信道中。

 

4.可恢复性:

当该channel管理从故障中恢复时,events留存channel中。Flume支持由本地文件系统支持的持久化的channel。还有一个内在通道,它只是将事件存储在内存中的队列中,

这更快,但是当agent进程死亡时仍留在内存通道中的任何事件都无恢复。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章