Flume 概述

跟風遠走 提交于 2019-12-23 00:56:49

简介

Flume是一种分布式的、可靠的、可用的服务,用于有效地收集、聚合和移动大量的日志数据。它具有简单灵活基于流数据的架构,采用了许多故障转移和恢复机制来保证可靠性。

架构

在这里插入图片描述

  • Source
    Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。

  • Channel
    Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。
    Flume有两种Channel:Memory Channel和File Channel。
    Memory Channel将数据缓存在内存中,当程序宕机或者重启时缓存中的数据会丢失。
    File Channel将所有数据写到磁盘。因此在程序重启或机器宕机的情况下不会丢失数据。

  • Sink
    Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到目的存储或发送到另一个Flume Agent。
    Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr。

Flume事务

为了保证数据的可靠性,Flume内部使用两个独立的事务(Put事务和Take事务)分别负责从soucrce到channel,以及从channel到sink的事件传递。
在这里插入图片描述

数据流向

Flume的每一条消息都被封装成Event的形式处理,下图是Event的处理流程。

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!