这篇文章主要介绍了Flume有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
flume是做收集的,可以把它理解为一个数据的转换者,从本地把数据读取,然后转化到hdfs分布式文件系统上,目的是把两个系统的文件做一个对接;类似于sqoop做数据库的对接,它把mysql的数据库转到hdfs上或Hbase上。
Flume相当于一根管子,里面流的是数据 ,进去的目录-source(本地目录),Flume进来监控的是本地目录;出去的目录-sink(HDFS目录,分布式文件系统上);
Flume进来监控的是本地目录,本地里有一个监控的目录,本地目录中的文件要是变化才可以。不能直接监控到nginx服务器,它上面会产生日志,它一直在读写,nginx产生日志,进行真正滚动后,比如10分钟生成一个文件,这时,你把它mv 或 copy到 本地要监控的目录,flume不能监控目录中文件内容是一直变化的,只能监控文件的个数的变化,flume一看个数变化,它才把日志抓过来。
最近两天,仔细的看了一下Flume中央日志系统(版本号:1.3.X),Flume在本人看来,还是一个非常不错的日志收集系统的,其设计理念非常易用,简洁。并且是一个开源项目,基于Java语言开发,可以进行一些自定义的功能开发。运行Flume时,机器必须安装装JDK6.0以上的版本,并且,Flume目前只有Linux系统的启动脚本,没有Windows环境的启动脚本。
Flume主要由3个重要的组件购成:
Source:完成对日志数据的收集,分成transtion 和 event 打入到channel之中。
Channel:主要提供一个队列的功能,对source提供中的数据进行简单的缓存。
Sink:取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。
对现有程序改动最小的使用方式是使用是直接读取程序原来记录的日志文件,基本可以实现无缝接入,不需要对现有程序进行任何改动。
对于直接读取文件Source,有两种方式:
ExecSource:以运行Linux命令的方式,持续的输出最新的数据,如tail -F 文件名指令,在这种方式下,取的文件名必须是指定的。
SpoolSource:是监测配置的目录下新增的文件,并将文件中的数据读取出来。
需要注意两点:
1、拷贝到spool目录下的文件不可以再打开编辑。
2、spool目录下不可包含相应的子目录。 在实际使用的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,将文件拷贝到spool的监控目录。log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool目录。基本实现了实时的监控。Flume在传完文件之后,将会修改文件的后缀,变为.COMPLETED(后缀也可以在配置文件中灵活指定)
ExecSource,SpoolSource对比:
ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。
SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。如果应用无法实现以分钟切割日志文件的话,可以两种收集方式结合使用。
Channel有多种方式:有MemoryChannel,JDBC Channel,MemoryRecoverChannel,FileChannel。
MemoryChannel可以实现高速的吞吐,但是无法保证数据的完整性。
MemoryRecoverChannel在官方文档的建议上已经建义使用FileChannel来替换。
FileChannel保证数据的完整性与一致性。
在具体配置实现的FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。
Sink在设置存储数据时,可以向文件系统中,数据库中,hadoop中储数据(HDFS、HBase),在日志数据较少时,可以将数据存储在文件系中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后进行相应的数据分析。
感谢你能够认真阅读完这篇文章,希望小编分享的“Flume有什么用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。