Apache-Flume简单介绍

Apache-Flume1.7.0简单介绍

Flume是什么?

flume 是一款分布式、可靠的、实用的采集系统,该系统能高效收集、聚合、移动海量的数据,从不同的数据源到一个中心的存储系统。

使用Flume有以下前置条件。

  • JAVA-1.7+的运行时环境
  • 对配置的source、sink、channel内存足够的内存资源
  • 磁盘空间,主要是针对配置的sink与channel的地盘空间
  • 每个agent的JVM内存必须对所使用的目录有读写权限

Flume模型解析

Apache-Flume简单介绍

一个Flume的event被定义成一个data flow单元,每个data flow都会有一个字节的header&一个可配置的分布式string的数据集合。

Flume Agent是一个JVM进程,这个进程管理着Sources、sinks、channels等不同的组件

  • Source从一个外部系统消费数据,将数据从外部系统读进到flume的chennel,不同的source可以读取不同外部数据源的数据,比如TailDirSource可以保证断点续传,能够记录下offset;
  • channel是一个数据管道,一个channel对应一个source,可以通过source端选择不同的channel选择器
    • mutipuxing channel
    • replication channel
    • channel有2种实现形式
      • memory channel 速度快但是数据有丢失风险
      • file channel 速度较慢,但是数据不会丢失
  • Sink是一个组件,用来将数据从flume传输到下一个存储系统,每个sink对应一个channel

Flume常用的拓扑模型

Apache-Flume简单介绍
该拓扑图主要是用来削峰

Apache-Flume简单介绍
该拓扑主要是用来将多个日志服务产生的日志汇总到统一的存储系统中

Apache-Flume简单介绍
该拓扑主要是将相同的日志数据分别全量导入到不同的存储介质,每个存储介质中的数据其实是一样的。