Apache Flume

作者: spraysss | 来源:发表于2019-01-31 16:49 被阅读0次

    Flume是一种分布式的、可靠的、可用的服务,用于有效地收集、聚合和移动大量日志数据,它有如下特点:

    • 基于Streaming data flow的简单而灵活的体系结构.它具有健壮性和容错性
    • 具有可调可靠性(reliability)机制和许多故障转移和恢复机制.
    • 使用一个简单的可扩展数据模型,支持在线分析应用程序

    概述

    Apache Flume是一个分布式的、可靠的和可用的系统,用于有效地收集、聚合大量日志数据并将它们从许多不同的源移动一个中央的集中存储中

    Apache Flume的使用不仅限于日志数据聚合。因为数据源是可定制的,所以Flume可以用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息以及几乎所有可能的数据源

    系统要求

    • java1.8+
    • Memeory : 供·sources, channels ,sinks使用的内存 需要足够
    • Disk Space: 供channels ,sinks使用的Disk Space 需要足够
    • Directory Permissions: agent需要有目录的读写权限

    数据模型

    • event 携带字节信息和一些可选的字符串属性组成的 data flow 单元
    • agent 一个(JVM)进程,它是承载event从外部源(比如web server)流向下一个目标(hop)的组件
    • source 消费外部源(比如web server)传输给他的event,外部源以目标Flume souce可以识别的格式向Flume发送event
    • channelFlume souce接收到event时,它将其存储到一个或多个channel中。channel是一个被动存储,它保存event,直到eventsink消费
    • sink sinkchannel中取event,并将其放入诸如HDFS(通过Flume HDFS sink)之类的外部存储中,或将其转发到流中下一个Flume agent(下一跳)的Flume source
      Flume data flow

    从上面的架构图可以看到 Source ,Channel,Sink 都运行与Agent中,并且它们是异步运行的
    类比于网络,Flume agent就像是一个event 路由器

    可靠性

    event暂存于agent的通道之中。然后将传递到流中的下一个agent或最终存储库(如HDFS),只有将事件存储在下一个代理的通道或最终存储库之后才会将event从当前channel中删除,这就是Flume中的单跳消息传递语义如何提供流的端到端可靠性.

    Flume使用事务方法来保证event的可靠交付。
    在多跳流的情况下,上一跳的接收器和下一跳的源都有自己的事务在运行,以确保数据安全地存储在下一跳的通道中

    可恢复性

    channel可以基于本地文件系统的的持久性实现恢复

    相关文章

      网友评论

        本文标题:Apache Flume

        本文链接:https://www.haomeiwen.com/subject/rpiksqtx.html