【大数据】Flume是个什么呢

一、Flume的简介

Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据。Apache Flume的使用不仅限于日志数据聚合。由于数据源是可定制的,因此Flume可用于传输大量事件数据,包括但不限于网络流量数据,社交媒体生成的数据,电子邮件消息以及几乎所有可能的数据源。
它具有基于流数据流的简单灵活的体系结构。它具有可调整的可靠性机制以及许多故障转移和恢复机制,具有强大的功能和容错能力。
简单说就是读取磁盘数据,写到HDFS,基本结构如下图:
在这里插入图片描述

二、Flume的重要组件

说到Flume的架构,先来了解下Flume的核心组件吧

1、Agent

一个JVM进程,由Source、Channel、Sink组成

2、Source

采集数据,将采集的数据传给channel
(1)Spooling Directory Source
type@spooldir.
监控指定目录,一旦出现新的文件,就会解析新文件的内容,传输到定义的sink中
(2)Avro Source
type@avro
可以监听IP和端口,并不一定是本机的IP,可以监听其他机器的IP和port,支持IP过滤
(3)Kafka Source
从Kafka指定的topic中读取数据
Type@org.apache.flume.source.kafka.KafkaSource
(4)Taidir Source
type@TAILDIR.
可监控多个文件,一旦文件内有新写入的数据,就会将其写入到指定的sink内,不适用于Windows系统
(5)Thrift Source
与Avro类似,但不支持IP过滤

3、Channel

一个队列,存储数据,Channel中是一个个Event,Event是传输的最小单元
是Source和Sink之间的缓存区,接受Source和Sink以不同的速率写入和读取操作
(1)Memory Channel
Event保存在Java堆中,允许数据小量丢失
(2)Kafka Channel
将数据临时缓存在Kafka中
(3)File Channel
Event保存在本地文件中,可靠性高,吞吐量低于Memory Channel
(4)Spillable Memory Channel
event存放在内存和磁盘上,内存作为主要存储,当内存达到一定临界点的时候会溢写到磁盘上
(5)JDBC Channel
Event存放于一个支持JDBC连接的数据库中

4、Sink

从Channel中获取数据,传到目标位置
(1)HDFS Sink
将事件写入到Hadoop分布式文件系统HDFS中
(2)Hive Sink
将包含分割文本或者JSON数据的events直接传送到Hive表或分区中
Hive是一个数据仓库工具,能将结构化的数据映射为一张数据库表
(3)Avro Sink
实现多级流动 和 扇出流(1到多) 扇入流(多到1) 的基础
(4)File Roll Sink
在本地文件系统中存储事件。每隔指定时长生成文件保存这段时间内收集到的日志信息
(5)Kafka Sink
将数据发布到Kafka上
(6)Http Sink
从channel获取events,并使用HTTP POST请求发送这些events到远程服务

三、Flume的架构

1、Setting multi-agent flow

在这里插入图片描述
顺序连接多个flume
桥接过多的flume,网速会慢,由于是串行的,一个宕机,影响整体

2、consolidation

在这里插入图片描述
多个flame传到一个集中的flame,由这个集中的flume上传到目标位置

3、multiplexing the flow

在这里插入图片描述

将数据复制到多个channel中,每个channel中有相同的数据,sink选择不同的目的地,实现将事件流向一个或多个目的地

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值