大家好,我是曜耀。

这几天曜耀开始复习一下自己的专业课,相信看过的都了解,就是当前热门的大数据技术与应用。我对于这门专业来说,一个特色就是都会,你说Linux我懂,你说java这是基操,python不好意思也会,前端?略懂略懂。hadoop?嗯?这是我们专业的特色不会没人知道吧。还有很多的只要你说的关于程序员的我们大数据专业都知道。如果你们听说过大数据技术与应用,这很正常,这一两年兴起的。

接下来就让我们复习一下Flume这个hadoop的核心之一。


Flume 是一个高可用,高可靠,分布式的海量日志采集、聚合和传输的系统,能够有效的收集、聚合、移


动大量的日志数据。


其实通俗一点来说就是 Flume 是一个很靠谱,很方便、很强的日志采集工具。


他是目前大数据领域数据采集最常用的一个框架。这就是我们大数据用来吃饭的饭碗。


特性



1. 它有一个简单、灵活的基于流的数据流结构,这个其实就是刚才说的 Agent 内部有三大组件,数据通



过这三大组件流动的



2. 具有负载均衡机制和故障转移机制,这个后面我们会详细分析



3. 一个简单可扩展的数据模型 (Source 、 Channel 、 Sink) ,这几个组件是可灵活组合的



Flume 的三大核心组件:


Source :数据源


Channel :临时存储数据的管道


Sink :目的地



Source


Source :数据源:通过 source 组件可以指定让 Flume 读取哪里的数据,然后将数据传递给后面的


channel


Flume 内置支持读取很多种数据源,基于文件、基于目录、基于 TCP\UDP 端口、基于 HTTP 、 Kafka 的


等等、当然了,如果这里面没有你喜欢的,他也是支持自定义的


在这我们挑几个常用的看一下:


Exec Source :实现文件监控,可以实时监控文件中的新增内容,类似于 linux 中的 tail -f 效果。


在这需要注意 tail -F 和 tail -f 的区别


tail -F


等同于 –follow=name --retry ,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果


再次创建相同的文件名,会继续追踪


tail -f


等同于 –follow=descriptor ,根据文件描述符进行追踪,当文件改名或被删除,追踪停止


在实际工作中我们的日志数据一般都会通过 log4j 记录, log4j 产生的日志文件名称是固定的,每天定


时给文件重命名


假设默认 log4j 会向 access.log 文件中写日志,每当凌晨 0 点的时候, log4j 都会对文件进行重命名,在


access 后面添加昨天的日期,然后再创建新的 access.log 记录当天的新增日志数据。


这个时候如果想要一直监控 access.log 文件中的新增日志数据的话,就需要使用 tail -F


NetCat TCP/UDP Source : 采集指定端口 (tcp 、 udp) 的数据,可以读取流经端口的每一行数据


Spooling Directory Source :采集文件夹里新增的文件


Kafka Source :从 Kafka 消息队列中采集数据



以上就是Flume的知识点。


我是曜耀,下次见。