Apache Flume介绍
来源:互联网 发布:windows打印服务 编辑:程序博客网 时间:2024/06/14 18:46
本文是我发表在大华Share Or Out俱乐部中的文章,希望读者阅读后能初步了解flume的基本概念和用途,限于本人能力,有错误之处还请指出,谢谢!
介绍:
Flume是Apache下面的一个分布式组件,它提供高效,可靠的收集,整合,传输日志数据的服务。Flume可以理解成一个管道,它连接数据的生产者和消费者,它从数据的生产者(Source)获取数据,保存在自己的缓存(Channel)中,然后通过Sink发送到消费者。它不对数据做保存和复杂的处理(可以做简单过滤和改写)。
架构:
Flume在版本0.9x以前的版本统称为Flume-og,1.X之后的版本统称为Flume-ng,也就是Origion Generation和New Generation的区别,相对于老的版本来说,Flume-ng版本在架构上面做了很大的改动,由于时间仓促,本文仅对Flume-ng版本做介绍。
由于Flume-og版本中Flume的角色过多,比如agent, collector,master等,导致用户使用起来存在困难,因此新的Flume-ng只设计了一个角色Agent,如下图:
Flume的Agent有如下特点:
- 一个Agent是一个单独的进程。
- 一个Agent由一个或多个管道组成。
- 一个管道由三个内部模块组成Source,Channel,Sink。
- 用户可以随意指定Agent中Source,Channel,Sink的类型,只要该类型符合用户自己的使用场景,Flume提供了相当大的灵活度,用户可以随意搭配。
Source
Source是Flume里面的数据生成模块,它一般有三种方式:
1. Source作为服务的,开启端口,接收其他服务发来的数据,如Avro,NetCat。
2. Source作为客户端,从其他服务获取数据,如Kafka。
3. Source自动生成数据,一般做调试/测试使用,如Seq,StressSource。
Flume内置提供了很多开箱即用的Source供用户选择,包括Avro,Kafka,NetCat,
Exec,SyslogTcp,StressSource等。另外,Flume也支持用户自定义Source。
Channel
Channel是Flume里面的数据缓存模块,它只提供数据的临时缓存。
Source将收到的数据放到Channel中,待Sink从Channel中取走该数据后,
Channel将清除该数据。
Flume内置了一些Channel供用户选择使用,比如Memory, File, Kafka, JDBC。
大体上分为内存,文件,外部存储系统,其中内存方式是最快速的。当然,用户也可以定制化自己的Channel。
Sink
Sink是Flume里面的数据处理模块,它负责从Channel中消费数据,可以存到HDFS,HBASE等数据库中,也有可以发给下一级Agent。
Flume内置了一些Channel供用户选择使用,比如Kafka,HBase, AsyncHBase,Logger,null等,当然,用户也可以定制化自己的Sink。
使用场景:
Flume灵活的架构设计,让用户可以根据自己的需要,任意的搭建。
总的来说有如下一些使用方式。
级联
在某些场景下,我们需要将两个agent级联起来。如果一个agent的Source为选为Avro类型,而另一个agent的Sink也选为Avro类型,那么我们可以将两个agent级联起来,只需要将下一级agent的IP信息配置到上一级的Sink配置中即可。
当然,是由于内置的Avro的Sink和内置的Avro类型的Source能对接起来,才能完成级联,如果用户有其他自定义的Source和Sink也能完成对接,那么也可以会用自定义的类型。
聚合
在一些场景下,我们需要收集多个系统的日志聚合到一个地方,因此需要将agent合并到一起。我们只需要将多个agent的sink指向一个agent即可。
分发
在某些场景下,我们需要将一个系统的日志收集后,f存到多个目的地,Flume支持这种应用。事实上,从一个source出来的数据,我们可以选择数据是简单的复制分发到所有的channel,,还是有针对数据做选择性的分发,比如图片发送到Channel A, 文本发送到Channel B等类似的功能。如下图:
- Apache Flume介绍
- Apache Flume
- Apache Flume
- Apache Flume
- Apache Flume
- 分布式日志收集系统Apache Flume的设计介绍
- 分布式日志收集系统Apache Flume的设计介绍
- 分布式日志收集系统Apache Flume的设计介绍
- 分布式日志收集系统Apache Flume的设计介绍
- 分布式日志收集系统Apache Flume的设计详细介绍
- 分布式日志收集系统Apache Flume的设计详细介绍
- 分布式日志收集系统Apache Flume的设计介绍
- 分布式日志收集系统Apache Flume的设计介绍
- Flume介绍
- flume介绍
- flume学习01-flume介绍
- flume二:flume Channel介绍
- flume四:flume sink介绍
- 《PCL点云库学习&VS2010(X64)》Part 19 PCL1.72(VTK6.2.0)PCL程序计时
- mybatis:方法需要传入多个参数时,报错:Caused by: org.apache.ibatis.binding.BindingException: Parameter 'p_v_id' not
- Linux--网络基础CCNA
- 浅谈java 中static关键字。
- HTTP/2 新特性浅析
- Apache Flume介绍
- FFMpeg编译之路
- Win32常用脚本
- STL容器之删除元素,迭代器失效
- 制作U盘启动盘
- 进击CSRF
- 55. Jump Game
- linux系统useradd及周边命令和概念详解
- leetcode Unique Binary Search Trees