您的位置:首页 > 其它

flume+kafka

2016-11-23 11:50 120 查看
Flume 是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume
提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume 的特点是可以通过手工配置,可以自动收集日志文件,在大数据处理及各种复杂的情况下,flume
经常被用来作为数据处理的工具,Flume
搜集日志的方式多种多样,比如可以检测文件夹的变化,可以监测端口信息等等,检测文件夹变化的方式来实时收集信息。
source:顾名思义,就是数据的来源,这个来源可以来自Web Service
中封装的客户端(AVRO
客户端),可以是NETCAT
服务,也可以是一个不断增长的日志文件(tail -f)。
channel:提供了一层缓冲机制,来实现数据的事务性传输,最大限度保证数据的安全传输。这层缓冲可以在内存中,可以在文件中、数据库中,当然也可以是自定义的实现。
sink:将数据转发到目的地,或者继续将数据转发到另外一个source,实现接力传输。可以通过AVRO Sink来实现。
通常处理离线业务,可以把收集来的数据放在HDFS
上,如果要实时的计算数据流就把数据收集在Kafka
中。使用的是对文件夹中文件变化进行监测的Spooling DirectorySource,channel
是用的内存空间,sink
是自定义的kafkasink,用于向kafka
发送数据。
Flume 的可靠性是指Flume
在数据的传输过程中,保证Events
的可靠专递。为了保证Event
在数据流点对点传输中是可靠地。这里要注意Channel
的选择,MemoryChannel:所有的events
被保存在内存中。优点是高吞吐。缺点是容量有限并且Agent
死掉时会丢失内存中的数据。FileChannel:所有的Events
被保存在文件中。优点是容量较大且死掉时数据可恢复。缺点是速度较慢。
Kafka 是一个开源的分布式消息系统,由LinkedIn
开发,主要用于处理LinkedIn
的活跃数据。活跃数据主要包括页面浏览量(PV)、用户行为(登陆、浏览、搜索、分享、点击)、系统运行日志(CPU、内存、磁盘、进程、网络)等方面的数据。这些数据通常以日志的形式进行存储,然后周期性的对这些数据进行统计分析。传统的日志分析系统主要用于处理离线数据,对于实时数据的处理,有较大的延迟性。现有的消息队列系统可以很好的用于日志分析系统对于实时数据的处理,但通常未被处理的数据不会写到磁盘上,这样不利于Hadoop
这样的离线分析系统的使用。
Kafka 可以很好的解决以上问题,能够很好的为离线和实时的分析系统提供服务。kafka
是一种高吞吐量的分布式发布订阅消息系统,它有如下特点:数据在磁盘上存取代价为O(1)一般数据在磁盘上是使用BTree
存储的,存取代价为O(lgn);高吞吐率,即使在普通的节点上每秒钟也能处理成百上千的message;显式分布式,即所有的producer、broker
和consumer
都会有多个,均为分布式的;支持数据并行加载到Hadoop
中。
Kafka 结构中Producer
用于收集数据,Broker
用于数据的中间存储,consumer
用于数据的订阅,Kafka 是显式分布式架构,producer、broker(kafka)和consumer
都可以有多个。Kafka
的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。多个broker
协同合作,producer
和consumer 部署在各个业务逻辑中被频繁的调用,三者通过zookeeper
管理协调请求和转发。这样一个高性能的分布式消息发布与订阅系统就完成了。
Kafka 源于LinkedIn,LinkedIn于2010
年12 月开源,是一种高吞吐量的分布式发布订阅消息系统,有如下特性:通过O(1)
的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB
的消息存储也能够保持长时间的稳定性能。高吞吐量:即使是普通的硬件Kafka
也可以支持每秒数十万的消息;支持通过Kafka
服务器和消费机集群来分区消息;支持HDFS
并行数据加载。
Kafka 的目的是提供一个发布订阅解决方案,它可以处理消费者规模的网站中的所有动作流数据。Kafka
的目的是通过HDFS
的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。Producer
主要功能是向Broker
同步或者异步的发送消息,可以通过任意的一个Broker
发现其他的Broker
位置信息;broker 是Producer
和Consumer
之间的桥梁,可以将信息可靠地缓存一段时间,这个我们可以定义;Kafka
的Consumer主要是用户应用程序,负责从Kafka
中读取数据,并行进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: