170 likes | 493 Views
Flume 基础知识. Flume 基础知识. Flume 基本 概念 Flume 核心 组件. Flume 基本概念. Flume 是一个分布式、可靠、高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时, Flume 提供对数据的简单处理,并写到各种数据接收方的能力。 Flume 在 0.9.x and 1.x 之间有较大的架构调整, 1.x 版本之后的改称 Flume NG , 0.9.x 的称为 Flume OG 。 New 和 Old 的分界岭如下。. Flume 基本概念. Flume NG 体系 架构
E N D
Flume基础知识 • Flume基本概念 • Flume核心组件
Flume基本概念 • Flume是一个分布式、可靠、高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据的简单处理,并写到各种数据接收方的能力。Flume 在0.9.x and 1.x之间有较大的架构调整,1.x版本之后的改称Flume NG,0.9.x的称为Flume OG。New和Old的分界岭如下。
Flume基本概念 • FlumeNG 体系架构 • 运行Flume时,机器必须安装装JDK6.0以上的版本,并且,Flume目前只有Linux系统的启动脚本,没有Windows环境的启动脚本。
Flume基本概念 • FlumeOG 体系架构
Flume基本概念 • Flume OG已经不再进行版本更新 • 参考网址: • https://github.com/cloudera/flume • http://archive.cloudera.com/cdh/3/flume/UserGuide/ • http://smartmessage.iteye.com/blog/1464075
Flume核心组件 • Flume主要由3个重要的组件构成: • Source • Sink • Channel
Flume核心组件-Source • Flume Source :完成对日志数据的收集,分成transtion 和 event 打入到channel之中。 • Flume提供了各种source的实现,包括Avro Source、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source,etc。
Flume核心组件-Source • 对现有程序改动最小的使用方式是使用是直接读取程序原来记录的日志文件,基本可以实现无缝接入,不需要对现有程序进行任何改动。直接读取文件Source,有两种方式: • Exec Source • Spool Source
Flume核心组件-Source • Exec Source 以运行Linux命令的方式,持续的输出最新的数据,如tail -F 文件名指令,在这种方式下,取的文件名必须是指定的。 • Spool Source 是监测配置的目录下新增的文件,并将文件中的数据读取出来。
Flume核心组件 • 使用Spool Source 需要注意: 1、拷贝到spool目录下的文件不可以再打开编辑。 2、spool目录下不可包含相应的子目录。
Flume核心组件-Source • Spool Source 如何使用? 在实际使用的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,将文件拷贝到spool的监控目录。 log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool目录。基本实现了实时的监控。Flume在传完文件之后,将会修 改文件的后缀,变为.COMPLETED(后缀也可以在配置文件中灵活指定)
Flume核心组件-Source • Exec Source 和Spool Source 比较 1、ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。 2、SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。 3、总结:如果应用无法实现以分钟切割日志文件的话,可以两种 收集方式结合使用。
Flume核心组件-Sink • Flume Sink取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。 • Flume也提供了各种sink的实现,包括HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink,etc。
Flume核心组件-Sink • Flume Sink在设置存储数据时,可以向文件系统中,数据库中,hadoop中储数据,在日志数据较少时,可以将数据存储在文件系中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后进行相应的数据分析。
Flume核心组件-Channel • Flume Channel主要提供一个队列的功能,对source提供中的数据进行简单的缓存。 • Flume对于Channel,则提供了Memory Channel、JDBC Chanel、File Channel,etc。
Flume核心组件-Channel • MemoryChannel可以实现高速的吞吐,但是无法保证数据的完整性。 • MemoryRecoverChannel在官方文档的建议上已经建义使用FileChannel来替换。 • FileChannel保证数据的完整性与一致性。在具体配置不现的FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。