美文网首页
Flume 理论

Flume 理论

作者: 袭明 | 来源:发表于2018-07-05 19:04 被阅读28次

    1. Flume 简介

    Flume 是一个分布式的海量日志采集,聚合,转移工具。

    大数据常用数据处理框架

    graph LR
    实时流数据采集--> flume,kafka
    实时流数据处理--> spark,storm
    实时数据查询处理--> impala
    批数据导入导出-->Sqoop
    批数据查询处理--> hive
    

    这里只是给flume一个定位,清楚flume适合做哪方面的数据处理。

    即:flume是基于数据流的组件来实现分布式的数据采集

    flume使用简单,仅需写一个配置文件,即可完成一个分布式,高可用,可靠的实时数据流采集任务。

    2.数据流模型

    Data Flow Model

    重要概念:

    • event:被定义为flume数据传输的基本单元,有消息头和消息体组成。
    • flow:指数据从源头到目的地的数据迁移过程。
    • Agent:一个独立的Flume进程,包含组件Source,Channel,Sink.(Agent使用JVM运行flume,每台机器运行一个agent,但可以在一个agent中包含多个sources和sinks)
    • Source:数据搜集组件。(source从client收集数据,传递给Channel)
    • Channel:连接source和Sink,类似一个队列
    • Sink:从Channel 中读取并移除event,将数据写到下一个目标源,可以是下一个source,也可以是HDFS。

    Flume运行的核心是Agent.Flume以agent为最小的独立运行单位。一个agent包含三个核心组件,source,channel,sink.

    2.1 Source

    • Source 负责数据的收集,将数据捕捉后进行处理,封装成event,传递给Channel。Flume提供了很多内置的source,支持Avro,log4j,syslog和http post,还支持自定义Source。

    这里主要看下Avro,Spooling,Netcat,kafka

    Source类型 说明
    Avro 支持avro 协议
    Spooling 监听本地文件夹,把新增的文件采集到flume
    netcat 从网络端口接受文本数据(多用于测试调试)
    kafka 用于从kafka中读取数据

    2.2 Channel

    • Channel 是连接Source和Sink的组件,可以看做是一个数据的缓冲区,可以将数据暂存到内存中也可以持久化到本地磁盘上,直到Sink处理完该事件。比较常用的是Memory和File 两种类型的Channel.
    Channel类型 说明
    Memory Event 数据存储在内存中
    File Event数据存储在磁盘文件中

    2.3 Sink

    • Sink从Channel中取出event,然后将数据发送到别处,可以是另一个agent的Source,或HDFS。
    Sink 类型 说明
    logger 把数据输出成logger日志(测试调试)
    hdfs 把数据写入hdfs
    avro 发送到此接收器的flume event将转化为avro event 并发送至配置的主机名:端口号
    kafka 将数据发送至kafka

    相关文章

      网友评论

          本文标题:Flume 理论

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