flume 1.Agent (Source Sink Channel)

前言

  Flume是一个基于流式架构的高可用、高可靠、分布式的海量日志采集、聚合和传输的系统。


1. 基础架构

在这里插入图片描述

1.1 Agent

  Agent是一个JVM进程,以event的形式将数据从数据源发送至目标端。由3个部分组成,Source、Channel、Sink。

A Flume agent is a (JVM) process that hosts the components through which events flow from an external source to the next destination(hop).

1.2 Source

  Source是负责接收数据到Flume Agent的组件

Avro Source
Thrift Source
Exec Source
JMS Source
Spooling Directory Source
Taildir Source
Kafka Source
NetCat TCP Source
NetCat UDP Source
Sequence Generator Source
Syslog Sources
HTTP Source
Stress Source
Legacy Sources
Custom Source
Scribe Source

1.3 Sink

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

HDFS Sink
Hive Sink
Logger Sink
Avro Sink
Thrift Sink
IRC Sink
File Roll Sink
Null Sink
HBaseSinks
MorphlineSolrSink
ElasticSearchSink
Kite Dataset Sink
Kafka Sink
HTTP Sink
Custom Sink

1.4 Channel

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

Memory Channel
JDBC Channel
Kafka Channel
File Channel
Spillable Memory Channel
Pseudo Transaction Channel
Custom Channel

1.5 Event

  Flume数据传输的基本单元,以Event的形式将数据从数据源发送至目标端。Event由Header和Body两部分组成,Header存放event的属性,K-V结构;Body存放数据,形式为字节数组。

A Flume event is defined as a unit of data flow having a byte payload and an optional set of string attributes.


2. Flume文档

Flume官网
文档
下载地址


3. Flume进阶

3.1 Flume事务

  Put事务
  Take事务

在这里插入图片描述

3.2 Flume Agent内部原理

在这里插入图片描述
重要组件:
1)ChannelSelector
  选出Event将要被发往哪个Channel。其共有两种类型,分别是Replicating(复制)和Multiplexing(多路复用)。ReplicatingSelector会将同一个Event发往所有的Channel,Multiplexing会根据相应的原则,将不同的Event发往不同的Channel

2)SinkProcessor
  类型包含:DefaultSinkProcessor、LoadBalancingSinkProcessor和FailoverSinkProcessor
  DefaultSinkProcessor对应的是单个的Sink,LoadBalancingSinkProcessor和FailoverSinkProcessor对应的是Sink Group,LoadBalancingSinkProcessor可以实现负载均衡的功能,FailoverSinkProcessor可以错误恢复的功能。

3.3 Flume拓扑结构

3.3.1 简单串联

在这里插入图片描述

  这种模式是将多个flume顺序连接起来了,从最初的source开始到最终sink传送的目的存储系统。此模式不建议桥接过多的flume数量, flume数量过多不仅会影响传输速率,而且一旦传输过程中某个节点flume宕机,会影响整个传输系统。

3.3.2 复制和多路复用

在这里插入图片描述
  Flume支持将事件流向一个或者多个目的地。这种模式可以将相同数据复制到多个channel中,或者将不同数据分发到不同的channel中,sink可以选择传送到不同的目的地

3.3.3 负载均衡和故障转移

在这里插入图片描述
  Flume支持使用将多个sink逻辑上分到一个sink组,sink组配合不同的SinkProcessor可以实现负载均衡和错误恢复的功能

3.3.4 聚合

在这里插入图片描述

  这种模式是我们最常见的,也非常实用,日常web应用通常分布在上百个服务器,大者甚至上千个、上万个服务器。产生的日志,处理起来也非常麻烦。用flume的这种组合方式能很好的解决这一问题,每台服务器部署一个flume采集日志,传送到一个集中收集日志的flume,再由此flume上传到hdfs、hive、hbase等,进行日志分析


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值