常用的大数据采集工具(代码片段)

刘星石 刘星石     2022-10-23     155

关键词:

天津网站建设为了高效采集大数据,依据采集环境及数据类型选择适当的大数据采集方法及平台至关重要。下面介绍一些常用的大数据采集平台和工具。

1、Flume

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节点。Flume Master节点之间使用Gossip协议同步数据。

Flume针对特殊场景也具备良好的自定义扩展能力,因此Flume适用于大部分的日常数据采集场景。因为Flume使用JRuby来构建,所以依赖Java运行环境。Flume设计成一个分布式的管道架构,可以看成在数据源和目的地之间有一个Agent的网络,支持数据路由。

Flume支持设置Sink的Failover和加载平衡,这样就可以保证在有一个Agent失效的情况下,整个系统仍能正常收集数据。Flume中传输的内容定义为事件(Event),事件由Headers(包含元数据,即Meta Data)和Payload组成。

Flume提供SDK,可以支持用户定制开发。Flume客户端负责在事件产生的源头把事件发送给Flume的Agent。客户端通常和产生数据源的应用在同一个进程空间。常见的Flume 客户端有Avro、Log4J、Syslog和HTTP Post。

2、Fluentd

Fluentd是另一个开源的数据收集架构,如图1所示。Fluentd使用C/Ruby开发,使用JSON文件来统一日志数据。通过丰富的插件,可以收集来自各种系统或应用的日志,然后根据用户定义将日志做分类处理。通过Fluentd,可以非常轻易地实现像追踪日志文件并将其过滤后转存到 MongoDB 这样的操作。Fluentd可以彻底地把人从烦琐的日志处理中解放出来。

图1  Fluentd架构

Fluentd具有多个功能特点:安装方便、占用空间小、半结构化数据日志记录、灵活的插件机制、可靠的缓冲、日志转发。Treasure Data公司对该产品提供支持和维护。另外,采用JSON统一数据/日志格式是它的另一个特点。相对Flume,Fluentd配置也相对简单一些。

Fluentd的扩展性非常好,客户可以自己定制(Ruby)Input/Buffer/Output。Fluentd具有跨平台的问题,并不支持Windows平台。

Fluentd的Input/Buffer/Output非常类似于Flume的Source/Channel/Sink。Fluentd架构如图2所示。

图2  Fluentd架构

3、Logstash

Logstash是著名的开源数据栈ELK(ElasticSearch,Logstash,Kibana)中的那个L。因为Logstash用JRuby开发,所以运行时依赖JVM。Logstash的部署架构如图3所示,当然这只是一种部署的选项。

图3 Logstash的部署架构

一个典型的Logstash的配置如下,包括Input、Filter的Output的设置。

复制

input 

    file 

        type =>"Apache-access"

        path =>"/var/log/Apache2/other_vhosts_access.log"

        

    file 

        type =>"pache-error"

        path =>"/var/log/Apache2/error.log"

    



filter 

    grok 

        match => "message"=>"%(COMBINEDApacheLOG)"

        

    date 

        match => "timestamp"=>"dd/MMM/yyyy:HH:mm:ss Z"

    



output  

    stdout 

    Redis 

        host=>"192.168.1.289"

        data_type => "list"

        key => "Logstash"

    

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.

几乎在大部分的情况下,ELK作为一个栈是被同时使用的。在你的数据系统使用ElasticSearch的情况下,Logstash是首选。

4、Chukwa

Chukwa是Apache旗下另一个开源的数据收集平台,它远没有其他几个有名。Chukwa基于Hadoop的HDFS和MapReduce来构建(用Java来实现),提供扩展性和可靠性。它提供了很多模块以支持Hadoop集群日志分析。Chukwa同时提供对数据的展示、分析和监视。该项目目前已经不活跃。

Chukwa适应以下需求:

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

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

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

Chukwa架构如图4所示。

图4  Chukwa架构

5、Scribe

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

Scribe架构如图5所示。

图5  Scribe架构

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

6、Splunk

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

图6  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运行原理如图7所示。

图7  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、FlumeFlume作为Hadoop的组件,是由Cloudera专门研发的分布式日志收集系统。尤其近几年随着F... 查看详情

吐血整理:常用的大数据采集工具,你不可不知

...数据中采集出有用的信息是大数据发展的最关键因素。大数据采集是大数据产业的基石,大数据采集阶段的工作是大数据的核心技术之一。为了高效采集大数据,依据采集环境及数据类型选择适当的大数据采集方法及平... 查看详情

启发式和探索式的大数据分析工具(代码片段)

陈希章2023年1月2日于上海这是一个献给自己的新年礼物,但其实已经构思了很久,这一方面跟我多年的工作经历有关——我的职业生涯中最为有意思的部分可能就是跟数据打交道,因为我认为数据是有生命力的,... 查看详情

数据可视化之-superset(代码片段)

...且拥有友好的用户界面,十分易用。由于Superset能够对接常用的大数据分析工具,如Hive、Kylin、Druid等,且支持自定义仪表盘,故可作为数仓的可视化工具。Superset官网地址:http://superset.apache 查看详情

elastic常用工具(代码片段)

elasticsearch常用工具:elasticsearch-dump:备份elasticsearch-head:数据展示、操作平台elasticsearch-headgithub地址:https://github.com/mobz/elasticsearch-headelasticsearch-head是一款非常好用的数据展示工具,且支持编写api对elastic进行操作。elastic5.x 查看详情

常用的大数据工具都有哪些?

大数据分析的前瞻性使得很多公司以及企业都开始使用大数据分析对公司的决策做出帮助,而大数据分析是去分析海量的数据,所以就不得不借助一些工具去分析大数据,。一般来说,数据分析工作中都是有很多层次的,这些层... 查看详情

大数据常用工具类——redisutil(代码片段)

redis工具类一、所需pom依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version></dependency><dependency><gr 查看详情

大数据常用工具类——redisutil(代码片段)

redis工具类一、所需pom依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version></dependency><dependency><gr 查看详情

常用的大数据工具都有哪些?

...系统对数据进行存储,支持海量数据的处理。采用多种的数据采集技术,支持结构化数据及非结构化数据的采集。通过图形化的模型搭建工具,支持流程化的模型配置。通过第三方插件技术,很容易将其他工具及服务集成到平台... 查看详情

利用jackson封装常用jsonutil工具类(代码片段)

...间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类。转换格式属性配置首先,我们需要对Json对象转换自定义些常用配置属性,封装成适... 查看详情

数据同步工具sqoop(代码片段)

...em:关系型数据库管理系统)与Hadoop之间进行高效的大数据交流。用户可以在Sqoop的帮助下, 查看详情

数据库学习笔记第三弹——mysql常用的图形化管理辅助工具及相关问题(图文详解2022))(代码片段)

数据库学习笔记第三弹——MySQL常用的图形化管理辅助工具(图文详解2022)文章目录数据库学习笔记第三弹——MySQL常用的图形化管理辅助工具(图文详解2022)1.MySQL常用的图形化管理辅助工具1.1工具1MySQLWorkbench1.2... 查看详情

常用算法(代码片段)

 知识目录一、冒泡排序二、选择排序三、插入排序四、快速排序五、堆排序六、归并排序总结一、冒泡排序1、思路:首先,列表每两个相邻的数比较大小,如果前边的比后边的大,那么这两个数就互换位置。就像是冒泡一... 查看详情

java常用的解析工具(代码片段)

这里介绍两种java解析工具。第一种:java解析html工具jsoup第二种:java解析XML工具Dom4jjsoupjsoup是一个用于处理真实HTML的Java库。它提供了一个非常方便的API,用于提取和操作数据,使用最好的DOM,CSS和类似jquery的方法。官网:https:/... 查看详情

anaconda中常用的用法(代码片段)

Anaconda中常用的用法conda是开源包(packages)和虚拟环境(environment)的管理系统。packages管理:可以使用conda来安装、更新、卸载工具包,并且它更关注于数据科学相关的工具包。在安装anaconda时就预先集成了像Numpy、Scipy、pandas、... 查看详情

python数据分析中常用的工具类和方法持续更新系列(代码片段)

本文主要记录在工作和学习中,做数据分析常用到的一些简单的工具函数和类。#判断是否为浮点数defis_float(n):try:float(n)exceptValueError:returnFalseelse:returnTrue#判断是否为整数:defis_integer(n):try:float(n)exceptValueError:returnFalseelse:r 查看详情

python数据分析中常用的工具类和方法持续更新系列(代码片段)

本文主要记录在工作和学习中,做数据分析常用到的一些简单的工具函数和类。#判断是否为浮点数defis_float(n):try:float(n)exceptValueError:returnFalseelse:returnTrue#判断是否为整数:defis_integer(n):try:float(n)exceptValueError:returnFalseelse:r 查看详情

github上一款一键生成数据库文档的大利器!(代码片段)

文章目录介绍快速开始表结构脚本基于Java代码引入screw及相关依赖代码编写基于Maven插件引入screw及相关依赖配置maven-plugins手动执行生成数据库文档成品地址介绍今天看了Guide老哥公众号(需要的朋友可以关注一波:JavaGui... 查看详情