首页 > 编程知识 正文

大数据采集的数据来源,分别阐述常用的ETL工具

时间:2023-05-03 14:54:26 阅读:169899 作者:4519

目录1-flume2- fluentd3- log stash4- Chu kwa5- scribe6- splunk7- scrapy

1- Flume

Flume作为Hadoop的组件,是Cloudera专门开发的分布式日志采集系统。 特别是近年来,随着Flume的不断完善,用户在开发过程中的易用性得到了很大的改善,Flume现在已经成为Apache Top项目之一。

Flume提供从控制台、RPC、文本、tail、Syslog和Exec等数据源收集数据的功能。

Flume采用多主机方式。 为了保证配置数据的一致性,Flume引入了ZooKeeper来保存配置数据。 ZooKeeper本身可以保证配置数据的一致性和高可用性。 此外,如果配置数据发生更改,ZooKeeper可以通知Flume Master节点。 使用Gossip协议在Flume Master节点之间同步数据。

Flume适用于大多数日常数据收集场景,因为Flume对于特殊场景也具有很好的定制可扩展性。 Flume是使用JRuby生成的,因此依赖于Java运行环境。 Flume被设计为分布式管道体系结构,它被认为在数据源和目标之间有一个代理网络,支持数据路由。

Flume支持Sink故障设置和负载平衡设置。 这样,即使代理发生故障,也能确保整个系统正常收集数据。 Flume传输的内容被定义为由Headers (包含元数据或元数据的事件(Event )和Payload )组成的事件。

Flume提供SDK,支持用户的定制开发。 Flume客户端负责在发生事件的源上将事件发送到Flume代理。 客户端通常与生成数据源的APP应用程序位于同一进程区域。 典型的Flume客户端包括Avro、Log4J、Syslog和HTTP Post。

2- Fluentd Fluentd是另一种开源数据收集体系结构,如图1所示。 Fluentd使用C/Ruby开发,并使用JSON文件统一日志数据。 丰富的插件使您能够从各种系统和APP应用程序收集日志,并根据用户定义对日志进行分类和处理。 使用Fluentd,跟踪日志文件、过滤日志文件并将其导出到MongoDB等操作非常简单。 Fluentd可以完全摆脱麻烦的日志处理。

Fluentd具有几个功能特征,包括易于安装、占地面积小、半结构化数据日志记录、灵活的插件机制、可靠的缓冲和日志传输。 Treasure Data公司提供该产品的支持和维护。 另外,采用JSON统一数据/日志形式也是其特征。 相对于Flume,Fluentd的构成也相对简单。

Fluentd的可扩展性非常好,客户可以自己定制输入/缓冲器/输出。 Fluentd有跨平台问题,不支持Windows平台。

Fluentd的Input/Buffer/Output与Flume的Source/Channel/Sink非常类似。 Fluentd体系结构如图2所示。

3- Logstash Logstash是著名的开源数据堆栈elk(Elasticsearch,Logstash,Kibana ) )中的l。 Logstash是用JRuby开发的,因此在运行时依赖于JVM。 Logstash的部署体系结构如图3所示。 当然,这只是部署的选项。

典型的Logstash配置如下。 包括输入、过滤器在内的输出的设定如下。

input { file } type=' Apache-access ' path='/var/log/Apache2/other _ vhosts _ access.log ' } file { type=' le。 filter { grok { match={ ' message '=' % (combinedapachelog () } date { match={ ' timestamp '=' ddate } output { stdot } redis { host=' 192.168.1.289 ' data _ type=' list ' key=' log stash ' }在大多数情况下,ELK会作为堆栈同时显示您的数据系统

4- Chukwa Chukwa是Apache旗下的另一个开源数据收集平台,其他几个没有名气。 Chukwa基于Hadoop的HDFS和MapReduce构建,通过Java实现,提供可扩展性和可靠性。 提供了很多模型

块以支持Hadoop集群日志分析。Chukwa同时提供对数据的展示、分析和监视。该项目目前已经不活跃。

Chukwa适应以下需求:

(1)灵活的、动态可控的数据源。

(2)高性能、高可扩展的存储系统。

(3)合适的架构,用于对收集到的大规模数据进行分析。

Chukwa架构如下图所示。

5- Scribe

Scribe是Facebook开发的数据(日志)收集系统。其官网已经多年不维护。Scribe为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。当中央存储系统的网络或者机器出现故障时,Scribe会将日志转存到本地或者另一个位置;当中央存储系统恢复后,Scribe会将转存的日志重新传输给中央存储系统。Scribe通常与Hadoop结合使用,用于向HDFS中push(推)日志,而Hadoop通过MapReduce作业进行定期处理。

Scribe架构如下图所示。

Scribe架构比较简单,主要包括三部分,分别为Scribe agent、Scribe和存储系统。

6- Splunk

在商业化的大数据平台产品中,Splunk提供完整的数据采集、数据存储、数据分析和处理,以及数据展现的能力。Splunk是一个分布式机器数据平台,主要有三个角色。

Splunk架构如下图所示。


Search:负责数据的搜索和处理,提供搜索时的信息抽取功能。

Indexer:负责数据的存储和索引。

Forwarder:负责数据的收集、清洗、变形,并发送给Indexer。

Splunk内置了对Syslog、TCP/UDP、Spooling的支持,同时,用户可以通过开发 Input和Modular Input的方式来获取特定的数据。在Splunk提供的软件仓库里有很多成熟的数据采集应用,如AWS、数据库(DBConnect)等,可以方便地从云或数据库中获取数据进入Splunk的数据平台做分析。

Search Head和Indexer都支持Cluster的配置,即高可用、高扩展的、但Splunk现在还没有针对Forwarder的Cluster的功能。也就是说,如果有一台Forwarder的机器出了故障,则数据收集也会随之中断,并不能把正在运行的数据收集任务因故障切换(Failover)到其他的Forwarder上。

7- Scrapy

Python的爬虫架构叫Scrapy。Scrapy是由Python语言开发的一个快速、高层次的屏幕抓取和Web抓取架构,用于抓取Web站点并从页面中提取结构化数据。Scrapy的用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy吸引人的地方在于它是一个架构,任何人都可以根据需求方便地进行修改。它还提供多种类型爬虫的基类,如BaseSpider、Sitemap爬虫等,最新版本提供对Web 2.0爬虫的支持。

Scrapy运行原理如下图所示。

Scrapy的整个数据处理流程由Scrapy引擎进行控制。Scrapy运行流程如下:

(1)Scrapy引擎打开一个域名时,爬虫处理这个域名,并让爬虫获取第一个爬取的URL。

(2)Scrapy引擎先从爬虫那获取第一个需要爬取的URL,然后作为请求在调度中进行调度。

(3)Scrapy引擎从调度那里获取接下来进行爬取的页面。

(4)调度将下一个爬取的URL返回给引擎,引擎将它们通过下载中间件发送到下载器。

(5)当网页被下载器下载完成以后,响应内容通过下载器中间件被发送到Scrapy引擎。

(6)Scrapy引擎收到下载器的响应并将它通过爬虫中间件发送到爬虫进行处理。

(7)爬虫处理响应并返回爬取到的项目,然后给Scrapy引擎发送新的请求。

(8)Scrapy引擎将抓取到的放入项目管道,并向调度器发送请求。

(9)系统重复第(2)步后面的操作,直到调度器中没有请求,然后断开Scrapy引擎与域之间的联系。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。