Flume 基础知识

1. Flume 简介

Flume 是一个分布式的海量日志采集,聚合,转移工具。

大数据常用数据处理框架

graph LR
实时流数据采集--> flume,kafka
实时流数据处理--> spark,storm
实时数据查询处理--> impala
批数据导入导出-->Sqoop
批数据查询处理--> hive

这里只是给flume一个定位,清楚flume适合做哪方面的数据处理。

即:flume是基于数据流的组件来实现分布式的数据采集

flume使用简单,仅需写一个配置文件,即可完成一个分布式,高可用,可靠的实时数据流采集任务。

2.数据流模型

Data Flow Model

重要概念:

  • event:被定义为flume数据传输的基本单元,有消息头和消息体组成。
  • flow:指数据从源头到目的地的数据迁移过程。
  • Agent:一个独立的Flume进程,包含组件Source,Channel,Sink.(Agent使用JVM运行flume,每台机器运行一个agent,但可以在一个agent中包含多个sources和sinks)
  • Source:数据搜集组件。(source从client收集数据,传递给Channel)
  • Channel:连接source和Sink,类似一个队列
  • Sink:从Channel 中读取并移除event,将数据写到下一个目标源,可以是下一个source,也可以是HDFS。

Flume运行的核心是Agent.Flume以agent为最小的独立运行单位。一个agent包含三个核心组件,source,channel,sink.

2.1 Source
  • Source 负责数据的收集,将数据捕捉后进行处理,封装成event,传递给Channel。Flume提供了很多内置的source,支持Avro,log4j,syslog和http post,还支持自定义Source。

这里主要看下Avro,Spooling,Netcat,kafka

Source类型说明
Avro支持avro 协议
Spooling监听本地文件夹,把新增的文件采集到flume
netcat从网络端口接受文本数据(多用于测试调试)
kafka用于从kafka中读取数据
2.2 Channel
  • Channel 是连接Source和Sink的组件,可以看做是一个数据的缓冲区,可以将数据暂存到内存中也可以持久化到本地磁盘上,直到Sink处理完该事件。比较常用的是Memory和File 两种类型的Channel.
Channel类型说明
MemoryEvent 数据存储在内存中
FileEvent数据存储在磁盘文件中
2.3 Sink
  • Sink从Channel中取出event,然后将数据发送到别处,可以是另一个agent的Source,或HDFS。
Sink 类型说明
logger把数据输出成logger日志(测试调试)
hdfs把数据写入hdfs
avro发送到此接收器的flume event将转化为avro event 并发送至配置的主机名:端口号
kafka将数据发送至kafka

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值