Flume日志收集系统

flume基础知识
1、hdfs数据接入方式:hdfs shell命令、hdfs api、MR等各种分布式计算方式、sqoop–传统数据库与hadoop同步、数据管道方式flume、其他(FTP:hdfs-over-ftp)
2、Flume是什么
Cloudera提供的高可用、高可靠的,分布式海量日志采集聚合和传输系统
支持在日志系统中定制各类数据发送方,用于收集数据
提供对数据进程简单处理,并写到各数据接收方的能力
3、为什么使用flume
1)海量数据将日志同时写入hdfs,会对hdfs产生巨大压力,导致hdfs不堪重负出现严重的延迟
2)海量web服务器分别将日志提交到hdfs,会产生海量小文件问题
3)海量web服务器分别将日志提交到hdfs,可能会出现数据丢失
4、flume解决的问题
1)降低了web服务器与hdfs的耦合度,同时起缓冲作用
2)Flume通过聚合可以控制或者减少小文件产生
3)Flume通过channel持久化和事务能确保数据不丢失
5、什么情况下使用flume
1)flume将数据表示为事件,每个事件是一条独立的记录,如果数据不能表示为多条独立的记录,flume可能不适合此场景
2)如果每小时产生几个G的数据量,不值得用flume
3)实时推送事件,持续、海量数据流适合使用flume
6、flume NG基本架构
Flume日志收集系统_第1张图片
1) Agent:一个独立的flume进程,一个agent包含多个sources、channels、sinks
Event:flume的基本数据单位,可以是日志记录、avro等
Source:采集外部数据,传给channel
Channel:中转Event的一个临时存储,保存source传递来的event事件,相当于连接source和sink的一个消息队列
Sink:从Channel拉取数据,运行在一个独立线程,将数据发送给下一个Agent或者下一个系统
2)Source:负责接收event或者通过特殊机制产生event,并将event批量的放到一个或者多个channel。Source必须与channel关联
类型:与系统集成的source,如Syslog,NetCat
自动生成事件的source,如exec
用于agent与agent通信的RPC source,如Avro,Thrift
Chanel:位于source与sink之间,缓存接收到的event。当sink成功的将event发送到下一个agent的channel或者最终目的地,event才从channel中移除。不同的channel提供的持久化水平是不一样的。Memory Channel:volatile(不稳定)、File Channel:基于WAL(Write-Ahead Logging)实现、JDBC Channel:基于嵌入Database实现。Channel可以和任何数量的source和sink工作。
Flume日志收集系统_第2张图片
Sink:负责将event传输到下一个agent或最终目的地,完成后将event从channel中删除。存储Event到最终目的的终端Sink,比如HDFS,HBase、自动消耗的Sink,比如:Null Sink、用于Agent间通信的RPC sink,比如Avro,thrift

你可能感兴趣的:(flume,大数据开发)