大数据系统数据采集产品的架构分析_第1页
大数据系统数据采集产品的架构分析_第2页
大数据系统数据采集产品的架构分析_第3页
大数据系统数据采集产品的架构分析_第4页
大数据系统数据采集产品的架构分析_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大数据系统数据采集产品的架构分析任何完整的大数据平台,普通涉及下列的几个过程:数据采集数据存储数据解决数据呈现(可视化,报表和监控)其中,数据采集是全部数据系统必不可少的,随着大数据越来越被重视,数据采集的挑战也变的尤为突出。这其中涉及:数据源多个多样数据量大,变化快如何确保数据采集的可靠性的性能如何避免重复数据如何确保数据的质量我们今天就来看看现在可用的某些数据采集的产品,重点关注某些它们是如何做到高可靠,高性能和高扩展。ApacheFlumeFlume是Apache旗下,开源,高可靠,高扩展,容易管理,支持客户扩展的数据采集系统。Flume使用JRuby来构建,因此依赖Java运行环境。Flume最初是由Cloudera的工程师设计用于合并日志数据的系统,后来逐步发展用于解决流数据事件。Flume设计成一种分布式的管道架构,能够看作在数据源和目的地之间有一种Agent的网络,支持数据路由。每一种agent都由Source,Channel和Sink构成。SourceSource负责接受输入数据,并将数据写入管道。Flume的Source支持HTTP,JMS,RPC,NetCat,Exec,SpoolingDirectory。其中Spooling支持监视一种目录或者文献,解析其中新生成的事件。ChannelChannel存储,缓存从source到Sink的中间数据。可使用不同的配备来做Channel,例如内存,文献,JDBC等。使用内存性能高但不持久,有可能丢数据。使用文献更可靠,但性能不如内存。SinkSink负责从管道中读出数据并发给下一种Agent或者最后的目的地。Sink支持的不同目的地种类涉及:HDFS,HBASE,Solr,ElasticSearch,File,Logger或者其它的FlumeAgentFlume在source和sink端都使用了transaction机制确保在数据传输中没有数据丢失。Source上的数据能够复制到不同的通道上。每一种Channel也能够连接不同数量的Sink。这样连接不同配备的Agent就能够构成一种复杂的数据收集网络。通过对agent的配备,能够构成一种路由复杂的数据传输网络。配备如上图所示的agent构造,Flume支持设立sink的Failover和LoadBalance,这样就能够确保即使有一种agent失效的状况下,整个系统仍能正常收集数据。Flume中传输的内容定义为事件(Event),事件由Headers(包含元数据,MetaData)和Payload构成。Flume提供SDK,能够支持顾客定制开发:Flume客户端负责在事件产生的源头把事件发送给Flume的Agent。客户端普通和产生数据源的应用在同一种进程空间。常见的Flume客户端有Avro,log4J,syslog和HTTPPost。另外ExecSource支持指定一种本地进程的输出作为Flume的输入。固然很有可能,以上的这些客户端都不能满足需求,顾客能够定制的客户端,和已有的FLume的Source进行通信,或者定制实现一种新的Source类型。同时,顾客能够使用Flume的SDK定制Source和Sink。似乎不支持定制的Channel。FluentdFluentd(Github地址)是另一种开源的数据收集框架。Fluentd使用C/Ruby开发,使用JSON文献来统一日志数据。它的可插拔架构,支持多个不同种类和格式的数据源和数据输出。最后它也同时提供了高可靠和较好的扩展性。TreasureData,Inc对该产品提供支持和维护。Fluentd的布署和Flume非常相似:Fluentd的架构设计和Flume如出一辙:Fluentd的Input/Buffer/Output非常类似于Flume的Source/Channel/Sink。InputInput负责接受数据或者主动抓取数据。支持syslog,http,filetail等。BufferBuffer负责数据获取的性能和可靠性,也有文献或内存等不同类型的Buffer能够配备。OutputOutput负责输出数据到目的地例如文献,AWSS3或者其它的Fluentd。Fluentd的配备非常方便,以下图:Fluentd的技术栈以下图:FLuentd和其插件都是由Ruby开发,MessgaePack提供了JSON的序列化和异步的并行通信RPC机制。Cool.io是基于libev的事件驱动框架。FLuentd的扩展性非常好,客户能够自己定制(Ruby)Input/Buffer/Output。Fluentd从各方面看都很像Flume,区别是使用Ruby开发,Footprint会小某些,但是也带来了跨平台的问题,并不能支持Windows平台。另外采用JSON统一数据/日志格式是它的另一种特点。相对去Flumed,配备也相对简朴某些。LogstashLogstash是出名的开源数据栈ELK(ElasticSearch,Logstash,Kibana)中的那个L。Logstash用JRuby开发,全部运行时依赖JVM。Logstash的布署架构以下图,固然这只是一种布署的选项。一种典型的Logstash的配备以下,涉及了Input,filter的Output的设立。1234567891011121314151617181920212223242526272829input

{

file

{

type

=>

"apache-access"

path

=>

"/var/log/apache2/other_vhosts_access.log"

}

file

{

type

=>

"apache-error"

path

=>

"/var/log/apache2/error.log"

}}

filter

{

grok

{

match

=>

{

"message"

=>

"%{COMBINEDAPACHELOG}"

}

}

date

{

match

=>

[

"timestamp"

,

"dd/MMM/yyyy:HH:mm:ssZ"

]

}}

output

{

stdout

{

}

redis

{

host

=>

"00"

data_type

=>

"list"

key

=>

"logstash"

}}几乎在大部分的状况下ELK作为一种栈是被同时使用的。全部当你的数据系统使用ElasticSearch的状况下,logstash是首选。ChukwaApacheChukwa(github)是apache旗下另一种开源的数据收集平台,它远没有其它几个有名。Chukwa基于Hadoop的HDFS和MapReduce来构建(显而易见,它用Java来实现),提供扩展性和可靠性。Chukwa同时提供对数据的展示,分析和监视。很奇怪的是它的上一次github的更新事7年前。可见该项目应当已经不活跃了。Chukwa的布署架构以下。Chukwa的重要单元有:Agent,Collector,DataSink,ArchiveBuilder,Demux等等,看上去相称复杂。由于该项目已经不活跃,我们就不细看了。ScribeScribe是Facebook开发的数据(日志)收集系统。已经数年不维护,同样的,就不多说了。

SplunkForwarder以上的全部系统都是开源的,在商业化的大数据平台产品中,Splunk提供完整的数据采金,数据存储,数据分析和解决,以及数据呈现的能力。Splunk是一种分布式的机器数据平台,重要有三个角色:SearchHead负责数据的搜索和解决,提供搜索时的信息抽取。Indexer负责数据的存储和索引Forwarder,负责数据的收集,清洗,变形,并发送给IndexerSplunk内置了对Syslog,TCP/UDP,Spooling的支持,同时,顾客能够通过开发ScriptInput和ModularInput的方式来获取特定的数据。在Splunk提供的软件仓库里有诸多成熟的数据采集应用,例如AWS,数据库(DBConnect)等等,能够方便的从云或者是数据库中获取数据进入Splunk的数据平台做分析。这里要注意的是,SearchHead和Indexer都支持Cluster的配备,也就是高可用,高扩展的,但是Splunk现在还没有针对Farwarder的Cluster的功效。也就是说如果有一台Farwarder的机器出了故障,数据收集也会随之中断,并不能把正在运行的数据采集任务Failover到其它的Farwarder上。总结我们简朴讨论了几个流行的数据收集平台,它们大都提供高可靠和高扩展的数据收集。大多平台都抽象出了输入,输出和中间的缓冲的架构。运用分布

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论