Flume简介、基本概念

1.定义

Flume(水道 )是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。

最主要的作用是实时读取服务器本地数据到HDFS

组成架构

在这里插入图片描述

组件

Agent

Agent是一个JVM进程,它以事件的形式将数据从源头送至目的,是Flume数据传输的基本单元。

Agent主要有3个部分组成,Source、Channel、Sink。

Source:接受各种数据

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

可以轻量处理数据,如拦截。

用的最多的就是日志文件

exec、tailDir、spoolDir监控文件的区别
  1. exec是在执行 tailDir命令,监控单个文件,但不能保证数据不丢失;
  2. Spooldir Source 能够保证数据不丢失,且能够实现断点续传,但延迟较高,不能实时监控;
  3. Taildir Source 既能够实现断点续传,又可以保证数据不丢失,还能够进行实时监控。

Channel:缓冲区

Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。

Flume自带两种Channel:Memory Channel和File Channel。

  1. Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
  2. File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
channel selector
  1. replicating:复制

    发送的每个channel

  2. multiplexing:多路复用

    选择发送

Sink

Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。

Sink是完全事务性的。在从Channel批量删除数据之前,每个Sink用Channel启动一个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件。

Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、null、HBase、solr、自定义。其中hdfs和kafka最常用

Event

传输单元,Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地。读取日志的时候一次读一行

Header:事件的一些属性,key-value

Body:存放该条数据,形式为字节数组

在这里插入图片描述

innode

Linux 中储存文件元数据的区域就叫做 inode,每个 inode 都有一个号码,操作系统 用 inode 号码来识别不同的文件,Unix/Linux 系统内部不使用文件名,而使用 inode 号码来识别文件

内部原理

在这里插入图片描述

sink处理器有三种

  1. defaultProfessor(单个sink)
  2. LoadBalancingProfessor(负载均衡,用的最多)
  3. FailOverProfessor(故障转移)

自定义拦截器

实际应用

将不同日志发送到不同文件目录下

拓扑结构

  1. 简单串联

    将数据连接起来了,但是影响速率和有单点故障

  2. 多路复用

    配置多个channel和sink,发送到不同目的地

  3. 负载均衡和故障转移

在这里插入图片描述

Flume 支持使用将多个 sink 逻辑上分到一个 sink 组,sink 组配合不同的 SinkProcessor 可以实现负载均衡和错误恢复的功能。

  1. 聚合

    最符合实际应用场景,将多台服务器的日志数据采集,并汇总到hdfs、hive等进行处理

自定义

flume可自定义source、sink、interceptpr

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值