FLUME的简单了解--大数据纪录片第八记
Flume是Couldera提供的一个高可用的,高可靠性的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume 1.X版本的统称Flume-ng。我这次主要了解Flume-ng,因为新版本做了比较大的改进:
1、大大降低了对用户的要求,如核心组件的变化使得Flume的稳定使用 不再依赖于zookeeper,用户无需去搭建zookeeper集群;另外用户不需要纠结于OG中的模糊概念,因为组件减少了
2、有利于Flume和其他技术、hadoop周边组件的整合,比如在NG版本中,Flume轻松实现和jdbc、hbase的集成
3、将OG中版本中复杂、大规模、不稳定的标签移除,Flume实现了向灵活、轻便的转变,而且在功能上更强大、可扩展性更高,这一点主要表现在用户使用Flume搭建日志收集集群的过程中
一、Flume组成架构
Flume的核心是把数据从数据源手机过来,再送到目的地。为了保证运输一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地之后,删除数据缓存
1、Event:一个数据单元,带有一个可选的消息头。Flume传输的数据的基本单位是Event,如果是文本文件,通常是一行记录,这也是事务的基本单位。Event本事是一个Byte数组,并携带headers信息。Event代表着一个数据流的最小完整单元。
2、Flow:Event从源头到达目的点的迁移抽象
3、Client:操作位于原点处的Event,将其发送到Flume Agent
4、Agent:一个独立的Flume进程,包含组件Source、Channel、Sink
①Source:用来消费传递到组件的Event
②Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event
③Sink:从channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果需要的话)
二、对Agent的详细了解

1、Source:可以接收外部数据源发送过来的数据。不同的source,可以接收不同的数据格式。它可以监控指定文件夹的新文件变化,如果目录中有文件产生,就会立即读取其中的内容。source的类型有很多,比如:Avro Source,Thrift Source等
2、Channel:比较常见的Channel有以下三种:
①MemoryChannel 可以实现高速吞吐,但是无法保证数据的完整性
②MemoryRecoverChannel 在官方文档上建议用FileChannel代替
③FileChannel保证数据的完整性和一致性。在具体配置FileChannel时,建议FileChannel设置目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。FileChannel是一个持久化的隧道,它持久化所有时间,并存储到磁盘中。因此,即使出现问题down掉,数据也不会丢失。MemoryChannel是一个不稳定的隧道,它将数据存储在内存中,所以出现问题会导致数据丢失
3、Sink不断轮询Channel中的事件并且批量移除他们,将事件写到存储系统、索引系统或者下一个Flume Agent。Sink设置存储数据时,可以向文件系统、数据库、hadoop存数据,在日志数据较少时,可以将数据存储在文件系统中,并且设定一定的时间间隔保存数据。在日志数据较多的时候,可以将数据保存到hadoop中。常见的Sink类型有:HDFS Sink、Avro Sink、HBase Sink等
三、简单操作
其实我个人觉得对Flume的使用主要是在conf文件的编写,还有启动而已,下面展示一些简单情境下conf文件的编写
没有搭建环境,所以没有能实际操作,以后使用到再把这部分补上。。。。。。。。。。。未完待续、、、、、、、、、、、、、
我学习时主要参考的地址:https://blog.csdn.net/zhaodedong/article/details/52541688

浙公网安备 33010602011771号