您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 1浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

flume学习00---Data flow model

宝哥大数据 发布时间:2017-03-18 09:39:42 ,浏览量:1

一·、flume的数据流模型

Flume Event被定义为具有有字节的字节载荷和可选的字符串属性结合的数据流单元,flume agent 是承载事件从外部源流向下一个目的地的组件的JVM进程。

下图为Flume agent流程图

这里写图片描述 Flume source 消费由外部源(如Web Server)传递给他的事件。 外部源以一种格式化的Event发送给Flume,能够被目标 Flume source识别。 如:

  • Avro source :用于从Avro客户端,或者其他Avro sink中发送的Arvo Event事件
  • 类似的流可以使用Thrift Flume Source 来定义,用于接收来自Thrift Sink或者Thrift RPC 客户端,或Thrift客户端,这些客户端基于Thrift协议 使用任何语言编写的。

当Flume Source 接收到event时,它会将其存到一个或多个channels中。 Flume Channel 是一个被动存储。保存event直到被Flume Sink消费, 如File channel:

  • file channels 由本地文件系统支持, sink 从channel中移除事件,将其写道外部的存储中,或转发个下一个Flume agent中的source,

The source and sink within the given agent run asynchronously with the events staged in the channel.

复杂的数据流
Flume allows a user to build multi-hop flows where events travel through multiple agents before reaching the final destination. It also allows fan-in and fan-out flows, contextual routing and backup routes (fail-over) for failed hops.
二、可靠性(Reliability)

event在每个agent的channel中存储。 然后将事件传递到流中的下一个agent或最终的存储库(如HDFS)。 event只有被存储在下一agent的channel中或最终存储库中之后,才会从channel中移除这些event。 这是Flume中的单跳消息传递语义如何提供流的端到端可靠性。 Flume使用事务方法(transactional approach)来保证event的可靠传递。 source和sink在事务中封装分别存储/检索由信道提供的事务放置或提供的event。 这确保event集合可靠地在流中从点到点传递。 在多跳流的情况下,来自前一跳的sink和来自下一跳的source都使它们的事务运行,以确保数据安全地存储在下一跳的信道中。

三、可恢复性(Recoverability)

event存储载channel中,管理从故障中恢复。 Flume支持由本地文件系统支持的持久file channel。 还有一个memory channel,它简单地将event存储在内存队列中,这更快,但是当agent process 死亡时,仍然留在memory channel中的任何event都无法恢复。

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0385s