Flume基础知识点

Flume的简介

Flume 是一种分布式的,可靠的、高可用的服务,用于有效地收集,聚合和移动大量日志数据。它具有基于流数据流的简单灵活的体系结构。它具有可调整的可靠性机制以及许多故障转移和恢复机制,具有强大的功能和容错能力。它使用一个简单的可扩展数据模型,允许在线分析应用程序。
Flume 目前只有 Linux 系统的启动脚本,没有 Windows 环境的启动脚本。

Flume的体系结构

Flume 运行的核心是 Agent Flume 是以 agent 为最小的独立运行单位。一个 agent 就是一个 JVM 。它是一个完整的数据收集工具,含有三个核心组件,分别是source channel sink 。通过这些组件, Event 可以从一个地方流向另一个地方。如下图所示:

组件及其作用

 - Client:

客户端, Client 生产数据,运行在一个独立的线程中
- Event
一个数据单元,消息头和消息体组成。( Events 可以是日志记录、 avro 对象等。)
- Flow
Event 从源点到达目的点的迁移的抽象。
- Agent
一个独立的 Flume 进程,运行在 JVM 中,包含组件 Source Channel Sink
每台机器运行一个 agent ,但是一个 agent 中可以包含多个 sources sinks
- Source
数据收集组件。 source Client 收集数据,传递给 Channel
- Channel
管道,负责接收 source 端的数据,然后将数据推送到 sink 端。
- Sink
负责从 channel 端拉取数据,并将其推送到持久化系统或者是下一个 Agent
- selector
选择器,作用于 source 端,然后决定数据发往哪个目标。
- interceptor
拦截器, flume 允许使用拦截器拦截数据。允许使用拦截器链,作用于 source sink 阶段。

Flume的部署

单一数据模型
在单个 Agent 内由单个 Source, Channel, Sink 建立一个单一的数据流模型,如下图所示,整个数据流为 Web Server --> Source --> Channel --> Sink --> HDFS。

多数据流模型
1 )多 Agent 串行传输数据流模型

 2)多 Agent 汇聚数据流模型

 3)单 Agent 多路数据流模型

 4Sinkgroups 数据流模型

 小总结

flume 提供的数据流模型中,几个原则很重要。
Source--> Channel
1. 单个 Source 组件可以和多个 Channel 组合建立数据流,既可以 replicating multiplexing
2. 多个 Sources 可以写入单个 Channel
Channel-->Sink
1. 多个 Sinks 又可以组合成 Sinkgroups Channel 中获取数据,既可以 loadbalancing failover 机制。
2. 多个 Sinks 也可以从单个 Channel 中取数据。
3. 单个 Sink 只能从单个 Channel 中取数据
根据上述 5 个原则,你可以设计出满足你需求的数据流模型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值