任何完整的大数据平台,一般包括数据采集、数据存储、数据处理、数据展现(可视化,报表和监控)这几个过程。我们今天就来看看当前可用的一些数据采集的产品,重点关注一些它们是如何做到高可靠,高性能和高扩展。

任何完好的大数据渠道,一般包含以下的几个进程:

  1. 数据搜集
  2. 数据存储
  3. 数据处理
  4. 数据展示(可视化,报表和监控)

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第1张

其间,数据搜集是一切数据体系必不可少的,跟着大数据越来越被注重,数据搜集的应战也变的尤为杰出。这其间包含:

  • 数据源多种多样
  • 数据量大,改变快
  • 怎么确保数据搜集的牢靠性的功用
  • 怎么防止重复数据
  • 怎么确保数据的质量

咱们今日就来看看当时可用的一些数据搜集的产品,要点重视一些它们是怎么做到高牢靠,高功用和高扩展。

Apache Flume

Flume 是Apache旗下,开源,高牢靠,高扩展,简略办理,支撑客户扩展的数据搜集体系。 Flume运用JRuby来构建,所以依靠Java运转环境。

Flume开始是由Cloudera的工程师规划用于兼并日志数据的体系,后来逐步开展用于处理流数据事情。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第2张

Flume规划成一个散布式的管道架构,能够看作在数据源和目的地之间有一个Agent的网络,支撑数据路由。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第3张

每一个agent都由Source,Channel和Sink组成。

Source

Source担任接纳输入数据,并将数据写入管道。Flume的Source支撑HTTP,JMS,RPC,NetCat,Exec,Spooling Directory。其间Spooling支撑监督一个目录或许文件,解析其间新生成的事情。

Channel

Channel 存储,缓存从source到Sink的中心数据。可运用不同的装备来做Channel,例如内存,文件,JDBC等。运用内存功用高但不耐久,有或许丢数据。运用文件更牢靠,但功用不如内存。

Sink

Sink担任从管道中读出数据并发给下一个Agent或许终究的目的地。Sink支撑的不同目的地品种包含:HDFS,HBASE,Solr,ElasticSearch,File,Logger或许其它的Flume Agent

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第4张

Flume在source和sink端都运用了transaction机制确保在数据传输中没有数据丢掉。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第5张

Source上的数据能够复制到不同的通道上。每一个Channel也能够衔接不同数量的Sink。这样衔接不同装备的Agent就能够组成一个杂乱的数据搜集网络。经过对agent的装备,能够组成一个路由杂乱的数据传输网络。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第6张

装备如上图所示的agent结构,Flume支撑设置sink的Failover和Load Balance,这样就能够确保即便有一个agent失效的情况下,整个体系仍能正常搜集数据。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第7张

Flume中传输的内容界说为事情(Event),事情由Headers(包含元数据,Meta Data)和Payload组成。

Flume供给SDK,能够支撑用户定制开发:

Flume客户端担任在事情发生的源头把事情发送给Flume的Agent。客户端一般和发生数据源的运用在同一个进程空间。常见的Flume客户端有Avro,log4J,syslog和HTTP Post。别的ExecSource支撑指定一个本地进程的输出作为Flume的输入。当然很有或许,以上的这些客户端都不能满意需求,用户能够定制的客户端,和已有的FLume的Source进行通讯,或许定制完成一种新的Source类型。

一起,用户能够运用Flume的SDK定制Source和Sink。好像不支撑定制的Channel。

Fluentd

Fluentd (Github 地址)是另一个开源的数据搜集结构。Fluentd运用C/Ruby开发,运用JSON文件来一致日志数据。它的可插拔架构,支撑各种不同品种和格局的数据源和数据输出。***它也一起供给了高牢靠和很好的扩展性。Treasure Data, Inc对该产品供给支撑和保护。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第8张

Fluentd的布置和Flume十分类似:

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第9张

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第10张

Fluentd的架构规划和Flume千篇一律:

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第11张

Fluentd的Input/Buffer/Output十分类似于Flume的Source/Channel/Sink。

Input

Input担任接纳数据或许自动抓取数据。支撑syslog,http,file tail等。

Buffer

Buffer担任数据获取的功用和牢靠性,也有文件或内存等不同类型的Buffer能够装备。

Output

Output担任输出数据到目的地例如文件,AWS S3或许其它的Fluentd。

Fluentd的装备十分便利,如下图:

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第12张

Fluentd的技能栈如下图:

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第13张

FLuentd和其插件都是由Ruby开发,MessgaePack供给了JSON的序列化和异步的并行通讯RPC机制。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第14张

Cool.io是根据libev的事情驱动结构。

FLuentd的扩展性十分好,客户能够自己定制(Ruby)Input/Buffer/Output。

Fluentd从各方面看都很像Flume,区别是运用Ruby开发,Footprint会小一些,可是也带来了跨渠道的问题,并不能支撑Windows渠道。别的选用JSON一致数据/日志格局是它的另一个特色。相对去Flumed,装备也相对简略一些。

Logstash

Logstash是闻名的开源数据栈ELK(ElasticSearch,Logstash,Kibana)中的那个L。

Logstash用JRuby开发,一切运转时依靠JVM。

Logstash的布置架构如下图,当然这仅仅一种布置的选项。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第15张

一个典型的Logstash的装备如下,包含了Input,filter的Output的设置。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第16张

几乎在大部分的情况下ELK作为一个栈是被一起运用的。一切当你的数据体系运用ElasticSearch的情况下,logstash是***。

Chukwa

Apache Chukwa (github)是apache旗下另一个开源的数据搜集渠道,它远没有其他几个有名。Chukwa根据Hadoop的HDFS和Map Reduce来构建(清楚明了,它用Java来完成),供给扩展性和牢靠性。Chukwa一起供给对数据的展示,剖析和监督。很奇怪的是它的上一次github的更新事7年前。可见该项目应该现已不活泼了。

Chukwa的布置架构如下。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第17张

Chukwa的首要单元有:Agent,Collector,DataSink,ArchiveBuilder,Demux等等,看上去适当杂乱。

因为该项目现已不活泼,咱们就不细看了。

Scribe

Scribe是Facebook开发的数据(日志)搜集体系。现已多年不保护,相同的,就不多说了。

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第18张

Splunk Forwarder

以上的一切体系都是开源的,在商业化的大数据渠道产品中,Splunk供给完好的数据采金,数据存储,数据剖析和处理,以及数据展示的才能。

Splunk是一个散布式的机器数据渠道,首要有三个人物:

  • Search Head担任数据的查找和处理,供给查找时的信息抽取。
  • Indexer担任数据的存储和索引
  • Forwarder,担任数据的搜集,清洗,变形,并发送给Indexer

干货丨大数据体系数据搜集产品的架构剖析 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)  大数据 数据采集 大数据平台 第19张

Splunk内置了对Syslog,TCP/UDP,Spooling的支撑,一起,用户能够经过开发Script Input和Modular Input的方法来获取特定的数据。在Splunk供给的软件仓库里有许多老练的数据搜集运用,例如AWS,数据库(DBConnect)等等,能够便利的从云或许是数据库中获取数据进入Splunk的数据渠道做剖析。

这儿要注意的是,Search Head和Indexer都支撑Cluster的装备,也便是高可用,高扩展的,可是Splunk现在还没有针对Farwarder的Cluster的功用。也便是说假如有一台Farwarder的机器出了毛病,数据搜集也会随之中止,并不能把正在运转的数据搜集使命Failover到其它的Farwarder上。

总结:

咱们简略评论了几种盛行的数据搜集渠道,它们大都供给高牢靠和高扩展的数据搜集。大多渠道都笼统出了输入,输出和中心的缓冲的架构。运用散布是的网络衔接,大多数渠道都能完成必定程度的扩展性和高牢靠性。其间Flume,Fluentd是两个被运用较多的产品。假如你用ElasticSearch,Logstash也许是***,因为ELK栈供给了很好的集成。Chukwa和Scribe因为项目的不活泼,不引荐运用。

Splunk作为一个优异的商业产品,它的数据搜集还存在必定的约束,信任Splunk很快会开宣布更好的数据搜集的解决方案。

转载请说明出处
知优网 » 干货丨大数据体系数据收集产品的架构剖析(大数据采集架构)

发表评论

您需要后才能发表评论