Flume是由Cloudera公司开发的一款高性能、高可能的分布式日志收集系统。Flume的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。
初始的Flume版本是FlumeOG(Flume original generation),由Cloudera公司开发,叫做Cloudera Flume;后来Cloudera把Flume贡献给了Apache,版本改为FlumeNG(Flume next generation),现在称为Apache Flume。
注意:当前大部分高级数据源都没有提供针对Python API的访问接口,因此使用Python API时,先在官方网站上确认是否支持。
Flume是一个分布式的、可靠的、可以用于有效收集、聚合、移动海量日志数据的服务。Flume以Agent为最小的独立运行单位。单个Agent由Source、Sink和Channel三大组件构成,如图4.39所示。
图4.39 Flume Agent三大组件图
Flume提供了大量内置的Source、Channel和Sink类型。不同类型的Source、Channel和Sink可以自由组合。组合方式基于用户设置的配置文件。
Agent的配置信息包括以下几部分:
1)Agent的Source信息,多个Source间空格分隔。(www.xing528.com)
2)Agent的Channel信息,多个Channel间空格分隔。
3)Agent的Sink信息,多个Sink间空格分隔。
4)各个Source与Channel的关联,多个Channel间空格分隔。
5)各个Sink与Channel的管理,多个Channel间空格分隔。
其中,Source作为数据来源,Channel作为Flume的数据缓存,Sink是各个数据接收端。指定关联关系后,数据就会从Source端开始收集数据,然后发送到关联的Channel上进行缓存,最后发送到与Channel的Sink上。
在基于Flume风格的推送数据方式,和定义Sink的拉取数据方式的案例实践与分析中,Sink的host:port设置要求不同,可以简单地用以下方法加强理解:
1)使用推送数据方式时,由Flume负责推送数据,因此需要知道推送的目的地“host:port”,所以对应的Sink设置的“host:port”就是我们集群中的某个worker节点地址。
2)使用拉取数据方式时,原理同上,Spark Streaming应用从Flume侧拉取数据,因此需要知道Flume侧的“host:port”,所以对应定制的Sink设置的“host:port”是在Agent运行节点上。运行Spark Streaming时,输入该地址,就可以从该地址拉取数据了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。