Flume
由Cloudera公司开源的分布式、可靠、高可用的海量日志采集系统。数据源可定制,可扩展; 数据存储系统可定制,可扩展。
特点
可靠性:保证数据不丢失
可扩展性:各组件数目可扩展
高性能:吞吐率很高,能满足海量数据收集需求
可管理性:可动态增加和删除组件 文档丰富,社区活跃 已成为Hadoop生态系统标配
NG架构
Master
管理协调 agent 和collector的配置信息;
Flume集群的控制器;
跟踪数据流的最后确认信息,并通知agent;
通常需配置多个master以防止单点故障;
借助zookeeper管理管理多Master。
Event
Event是Flume数据传输的基本单元
Event是Flume以事件的形式将数据从源头传送到最终的目的
Event由可选的header和载有数据的一个byte array构成。
载有的数据对flume是不透明的
Header是容纳了key-value字符串对的无序集合,key在集合内是唯一的。
Header可以在上下文路由中使用扩展
Client
Client是一个将原始log包装成events并且发送它们到一个或多个agent的实体。
目的是从数据源系统中解耦Flume
在flume的拓扑结构中不是必须的
Agent
用于采集数据,是数据流产生的地方。一个Agent包含Source, Channel, Sink和其他组件。
Source用于获取数据,可从文本文件,syslog,HTTP等获取数据; Source负责接收event或通过特殊机制产生event,并将events批量的放到一个或多个Channel
Channel位于Source和Sink之间,用于缓存event;当Sink成功将event发送到下一跳的channel或最终目的,event从Channel移除。
Sink将Source获得的数据进一步传输给后面的Collector。Sink负责将event传输到下一跳或最终目的,成功完成后将event从channel移除。