文章采集软件app(如何从大数据中采集出有用的信息是大数据发展的最关键因素 )
优采云 发布时间: 2022-04-10 18:12文章采集软件app(如何从大数据中采集出有用的信息是大数据发展的最关键因素
)
大数据有多种来源。在大数据时代背景下,如何从大数据中获取有用信息是大数据发展的最关键因素。大数据采集是大数据产业的基石,大数据采集阶段的工作是大数据的核心技术之一。为了高效地采集大数据,关键是要根据采集环境和数据类型选择合适的大数据采集方法和平台。下面介绍一些常用的大数据采集平台和工具。
1个水槽
Flume 作为 Hadoop 的一个组件,是 Cloudera 专门开发的分布式日志采集系统。尤其是近年来,随着 Flume 的不断完善,用户在开发过程中的便利性有了很大的提升,Flume 现已成为 Apache Top 项目之一。
Flume提供了从Console(控制台)、RPC(Thrift-RPC)、Text(文件)、Tail(UNIX Tail)、Syslog、Exec(命令执行)等数据源采集数据的能力。
Flume 采用了多 Master 的方式。为了保证配置数据的一致性,Flume 引入了 ZooKeeper 来保存配置数据。ZooKeeper 本身保证了配置数据的一致性和高可用性。此外,ZooKeeper 可以在配置数据发生变化时通知 Flume Master 节点。Gossip 协议用于在 Flume Master 节点之间同步数据。
Flume对于特殊场景也有很好的自定义扩展能力,所以Flume适用于大部分日常数据采集的场景。因为 Flume 是用 JRuby 构建的,所以它依赖于 Java 运行时环境。Flume 被设计成一种分布式管道架构,可以看作是数据源和目的地之间的代理网络,以支持数据路由。
Flume 支持设置 Sink 的 Failover 和负载均衡,以保证在一个 Agent 故障时整个系统仍然可以正常采集数据。Flume中传输的内容被定义为一个事件,一个事件由Headers(包括元数据,即Meta Data)和Payload组成。
Flume 提供 SDK,可以支持用户定制开发。Flume 客户端负责将事件发送到事件源的 Flume 代理。客户端通常与生成数据源的应用程序位于同一进程空间中。常见的 Flume 客户端是 Avro、Log4J、Syslog 和 HTTP Post。
2 流利
Fluentd 是另一种开源数据采集架构,如图 1 所示。Fluentd 是用 C/Ruby 开发的,使用 JSON 文件来统一日志数据。通过丰富的插件,您可以采集各种系统或应用程序的日志,然后根据用户定义对日志进行分类。使用 Fluentd,跟踪日志文件、过滤它们并将它们转储到 MongoDB 等操作非常容易。Fluentd 可以将人们从繁琐的日志处理中彻底解放出来。
图 1 Fluentd 架构
Fluentd 具有多种特性:易于安装、占用空间小、半结构化数据记录、灵活的插件机制、可靠的缓冲和日志转发。为本产品提供支持和维护。此外,使用 JSON 统一的数据/日志格式是它的另一个特点。与 Flume 相比,Fluentd 的配置相对简单。
Fluentd 的扩展性很强,客户可以自己定制(Ruby)Input/Buffer/Output。Fluentd 存在跨平台问题,不支持 Windows 平台。
Fluentd 的 Input/Buffer/Output 与 Flume 的 Source/Channel/Sink 非常相似。Fluentd 架构如图 2 所示。
图 2 Fluentd 架构
3 日志存储
Logstash 是著名的开源数据栈 ELK(ElasticSearch、Logstash、Kibana)中的 L。因为 Logstash 是用 JRuby 开发的,所以运行时依赖于 JVM。Logstash的部署架构如图3所示。当然,这只是一个部署选项。
图3 Logstash的部署架构
一个典型的 Logstash 配置如下,包括 Input 和 Filter 的 Output 的设置。
输入 {
文件 {
类型 => “Apache 访问”
路径 => "/var/log/Apache2/other_vhosts_access.log"
}
文件 {
类型=>“补丁错误”
路径 => "/var/log/Apache2/error.log"
}
}
筛选 {
摸索{
匹配 => {“消息”=>”%(COMBINEDApacheLOG)”}
}
日期 {
匹配 => {"时间戳" => "dd/MMM/yyyy:HH:mm:ss Z"}
}
}
输出 {
标准输出 {}
雷迪斯 {
主机=>”192.168.1.289”
data_type => "列表"
键=>“Logstash”
}
}
几乎在大多数情况下,ELK 同时用作堆栈。在您的数据系统使用 ElasticSearch 的情况下,Logstash 是首选。
4 楚夸
Chukwa 是 Apache 旗下的另一个开源数据采集平台,知名度远不如其他平台。Chukwa 建立在 Hadoop 的 HDFS 和 MapReduce(用 Java 实现)之上,以提供可扩展性和可靠性。它提供了许多模块来支持 Hadoop 集群日志分析。Chukwa 还提供数据展示、分析和监控。该项目目前处于非活动状态。
Chukwa 满足以下需求:
(1)灵活、动态可控的数据源。
(2)高性能、高度可扩展的存储系统。
(3)用于分析采集的*敏*感*词*数据的适当架构。
Chukwa 架构如图 4 所示。
图 4 Chukwa 架构
5 抄写员
Scribe 是 Facebook 开发的数据(日志)采集系统。其官网多年未维护。Scribe 为日志的“分布式采集、统一处理”提供了可扩展和容错的解决方案。当中央存储系统的网络或机器出现故障时,Scribe 会将日志转储到本地或其他位置;当中央存储系统恢复时,Scribe 会将转储的日志重新传输到中央存储系统。Scribe 通常与 Hadoop 结合使用,将日志推送(push)到 HDFS 中,由 MapReduce 作业定期处理。
Scribe 架构如图 5 所示。
图 5 Scribe 架构
Scribe 架构比较简单,主要包括三个部分,即 Scribe 代理、Scribe 和存储系统。
6 斯普伦克
在商用大数据平台产品中,Splunk提供完整的数据采集、数据存储、数据分析处理、数据呈现能力。Splunk 是一个分布式机器数据平台,具有三个主要角色。Splunk 架构如图 6 所示。
图 6 Splunk 架构
搜索:负责数据的搜索和处理,在搜索过程中提供信息提取功能。
Indexer:负责数据的存储和索引。
Forwarder:负责数据的采集、清洗、变形、发送到Indexer。
Splunk 内置了对 Syslog、TCP/UDP 和 Spooling 的支持。同时,用户可以通过开发 Input 和 Modular Input 来获取特定的数据。Splunk提供的软件仓库中有很多成熟的数据采集应用,比如AWS、数据库(DBConnect)等,可以很方便的从云端或者数据库中获取数据,输入到Splunk的数据平台进行分析.
Search Head和Indexer都支持Cluster配置,即高可用和高扩展,但是Splunk还没有Forwarder的Cluster功能。也就是说,如果一台Forwarder机器出现故障,数据采集将中断,正在运行的数据采集任务无法故障转移到其他Forwarder。
7 刮擦
Python 的爬虫架构称为 Scrapy。Scrapy 是一个使用 Python 语言开发的快速、高级的屏幕抓取和网页抓取框架,用于抓取网站并从页面中提取结构化数据。Scrapy 用途广泛,可用于数据挖掘、监控和自动化测试。
Scrapy 的吸引力在于它是一种任何人都可以根据需要轻松修改的架构。还提供了各类爬虫的基类,如BaseSpider、Sitemap爬虫等。最新版本提供了对Web2.0爬虫的支持。
Scrapy的工作原理如图7所示。
图 7 Scrapy 运行原理
Scrapy 的整个数据处理流程由 Scrapy 引擎控制。Scrapy运行过程如下:
(1)当Scrapy引擎打开一个域名时,爬虫对域名进行处理,让爬虫获取第一个爬取的URL。
(2)Scrapy引擎首先从爬虫中获取第一个需要爬取的URL,然后在调度中将其作为请求调度。
(3)Scrapy 引擎从调度程序获取要抓取的下一页。
(4)Schedule 将下一次抓取的 URL 返回给引擎,引擎通过下载中间件将它们发送给下载器。
(5)下载器下载网页时,通过下载器中间件将响应内容发送给Scrapy引擎。
(6)Scrapy引擎接收到下载器的响应,通过爬虫中间件发送给爬虫进行处理。
(7)爬虫处理响应并返回爬取的项目,然后向Scrapy引擎发送新的请求。
(8)Scrapy 引擎将抓取的项目放入项目管道并向调度程序发送请求。
(9)系统重复(2)步骤之后的操作,直到调度器中没有请求,然后断开Scrapy引擎与域的连接。