Flume

Flume的简介

大数据处理流程

  • 数据采集
  • 数据存储
  • 数据清洗
  • 数据分析
  • 数据显示
    Flume是一个分布式的、可靠的、高可用的的服务,用于收集,聚合和移动大量的日志数据。

Flume的体系结构

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

核心概念

agent

flume最核心的角色就是agent,flume日志采集系统是由一个个的agent连接起来的数据传输通道。agent就是一个独立的守护进程JVM,它负责从数据源接收苏剧,并发送到下一个目的地。

source

从数据发生器接收数据,并将接收的数据以Event的形式传递给一个或多个channel。Flume提供了多种数据接收的方式,比如Avro,Thrift。

channel

channel是一种短暂的存储容器,它从source处接收到event格式数据后进行缓存,直到被消费掉。它在source和sink之间起到了桥梁的作用,channel是一个完整的事务,这一点保证了数据在收发时候的一致性,并可以和任意数量的source和sink连接。

sink

sink将数据存储到存储器中,比如HBase和HDFS,它从channels消费数据(events)并将其传递给目标,目标地可以是另一个sink,也可能是HDFS,HBase。

Event

数据在Flume内部都是以Event封装的形式存在的,因此source组件在获取到原始数据后,需要封装成Event后发送到channel中,然后sink从channel取出Event后,根据配置要求再转成其他的形式进行数据输出。
Event封装的对象主要包含两部分:Headers和Body;
Headers是一个集合Map类型,用于存储元数据(如标志,描述等)
Body就是一个字节数组,装载具体的数据内容。

transaction

Flume的事务机制,类似于数据库的事务机制。
Flume使用独立的事务分别从source到channel,以及从channel到sink的event传递。在任何时刻,Event至少在一个Channel上是完整有效的(基于事务机制保障)。

interceptor

拦截器,拦截工作在source组件之后,source产生的event会被传入的拦截器根据需要进行拦截。

Flume组件详解

SourceDesc
Avro Source通过监听一个网络端口来接收数据,而且接收的数据必须是使用Avro序列化框架序列化后的数据
Thrift Source监听Thrift端口,并从外部Thrift客户端流接收事件
Exec Source启动一个用户所指定的Linux Shell命令;采集linux Shell命令的标准输出,作为采集到的数据,转为event写入Channel
Spooling Directory Source监视一个指定的文件夹,如果文件夹下有没采集过的新文件,则将这些采集这些新文件中的数据,并转成Event写入channel;注意,spooling目录中的文件必须是不可变的,而且是不能重名的
Taildir source监视指定目录下的一批文件,只要某个文件中有新写入的行,就会被tail。它会记录每一个文件所tail到的位置,记录一个指定的positionfile保存目录中,格式为json。
Kafka Source使用kafka Consumer连接kafka读取数据,然后转成Event,写入到channel
NetCat Source启动一个socket服务,监听一个端口,将端口上收到的数据,转成Event写入channel
Http Source通过HTTP post/get来接收数据,通常get用于测试
ChannelDesc
Memory Channelevent存储在内存中,对于需要高吞吐量而且可以容忍数据丢失的情况下,可以选择
JDBC Channelevent被持久化到数据库
File Channelevent被缓存到本地磁盘文件中,可靠性高,不会丢失
Kafka Channelagent利用Kafka作为channel数据缓存,kafka channel在应用时可以没有source
SinkDesc
HDFS Sink数据被最终发到HDFS上,可以生成text文件或者Sequence文件,而且支持压缩;支持生成文件的周期性roll机制
Hive Sink可将text或json数据直接存储到hive分区表
Logger Sink数据输出到日志中,通常用于debug

Flume高阶

Flume是如何保证数据不丢失的,以及具体在哪个环节使用了事务?
1,At-Least-Once
2,At-Most-Once
3,Exectly-Once
Flume采用的是At-Least-Once策略
在这里插入图片描述
Flume的transaction是有生命周期的,分别是start,commit,rollback和close。
Flume监控

Flume调优

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值