关键词:
大数据的来源多种多样,在大数据时代背景下,如何从大数据中采集出有用的信息是大数据发展的最关键因素。大数据采集是大数据产业的基石,大数据采集阶段的工作是大数据的核心技术之一。为了高效采集大数据,依据采集环境及数据类型选择适当的大数据采集方法及平台至关重要。下面介绍一些常用的大数据采集平台和工具。
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"
几乎在大部分的情况下,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引擎与域之间的联系。
以上内容摘自《大数据采集与处理》一书。
赠书规则
关注下方公众号【Java与大数据架构】,回复“送书”,点击小程序参与抽奖。本次抽取5名幸运儿,免费包邮送一本《大数据采集与处理》
吐血整理的大数据学习资源大全
一、网站网易公开课https://open.163.com/腾讯课堂https://ke.qq.com/中国大学慕课https://www.icourse163.org/B站https://www.bilibili.com/学习资源非常多,内容系统且全面,重点关注一些专业培训机构上传的学习视频Statistahttps://www.statista.com/... 查看详情
吐血整理!6款大厂运营都在用的工具推荐
从挖掘用户需求、到用户沟通,从内容选题规划到活动策划方案,从数据分析到汇总方案……运营可真是个无所不能的岗位。无所不能的背后,当然是有如神助的运营工具啦~~一篇文章告诉你,大厂运营也在用的... 查看详情
[转帖]吐血整理所有常用端口,不全你来打我!
吐血整理所有常用端口,不全你来打我! 作者:ADreamClusive来源:http://blog.csdn.net/u013943420/article/details/65938696大家在学习计算机的时候,对于最常用的几个端口比如80端口肯定有很深的印象,但是对于其他一些不是那么常用的... 查看详情
吐血整理!java跑批任务防止重复
第1大技能:程序设计和开发数据结构和算法:常用数据结构,排序,检索等面向对象编程、设计模式,掌握建模语言和建模工具:UML、MVC编程思想高质量编码能力:重用性,低耦合,可扩展性... 查看详情
吐血整理所有常用端口,遇到端口问题一查就懂!
大家在学习计算机的时候,对于最常用的几个端口比如80端口肯定有很深的印象,但是对于其他一些不是那么常用的端口可能就没那么了解。所以,在一些使用频率相对较高的端口上,很容易会引发一些由于陌生而出现的错误,... 查看详情
面试刷算法,这些api不可不知!(代码片段)
...,最近在刷算法,发现有些api记得不熟,所以整理了一波,如果你也在刷题,赶紧收藏吧!集合在刷题中,各种数据结构是我们常常用到的,例如栈实现迭代、哈希存储键值对等等,我们来看看... 查看详情
面试刷算法,这些api不可不知!(代码片段)
...,最近在刷算法,发现有些api记得不熟,所以整理了一波,如果你也在刷题,赶紧收藏吧!集合在刷题中,各种数据结构是我们常常用到的,例如栈实现迭代、哈希存储键值对等等,我们来看看... 查看详情
你不可不知的数据库操作
一、数据库操作1、查看数据库 SHOWDATABASES; #默认数据库: mysql-用户权限相关数据 test-用于用户测试数据 information_schema-MySQL本身架构相关数据 2、创建数据库 #utf-8编码CREATEDATABASE数据库名称DEFAULTCHARSETutf8... 查看详情
吐血整理宝藏网站资源分享,建议收藏!|寻找c站宝藏
前言分享一些宝藏网站搜索平台聚合:一个开始(聚合搜索平台)虫部落(聚合搜索平台)谷歌浏览器(Chrome)插件:极简插件(Chrome插件商店)在线综合工具:在线工具一个工具箱逗比表情包网... 查看详情
totalcommander基础使用教程(吐血整理)
TotalCommander基础使用教程(吐血整理) 配置好了TotalCommander后,那么开始一段神奇的高效之旅吧!下面奉上吐血整理的TotalCommander基础使用教程!(只是整理,不是原创哦)一.常用操作常用的操作如查看、复制、移... 查看详情
常用的大数据采集工具(代码片段)
...采集大数据,依据采集环境及数据类型选择适当的大数据采集方法及平台至关重要。下面介绍一些常用的大数据采集平台和工具。1、FlumeFlume作为Hadoop的组件,是由Cloudera专门研发的分布式日志收集系统。尤其近几年随着F... 查看详情
常用的大数据采集工具(代码片段)
...采集大数据,依据采集环境及数据类型选择适当的大数据采集方法及平台至关重要。下面介绍一些常用的大数据采集平台和工具。1、FlumeFlume作为Hadoop的组件,是由Cloudera专门研发的分布式日志收集系统。尤其近几年随着F... 查看详情
java中常用的集合—初学者的你不可错过的精编整理(代码片段)
...因为使用的多,熟能生巧,所以这里呢!就给那些初学者整理一下Java当中常用的集合吧! 因为此篇文章是给初学者看到,所以对于集合的认识,我们就不从内存的角度去分析了,等你Java学到一定的时候,再去学习... 查看详情
如何快速全面掌握kafka?5000字吐血整理
Kafka是目前主流的分布式消息引擎及流处理平台,经常用做企业的消息总线、实时数据管道,本文挑选了Kafka的几个核心话题,帮助大家快速掌握Kafka,包括:Kafka体系架构Kafka消息发送机制Kafka副本机制Kafka控制器KafkaRebalance机制... 查看详情
超全整理:程序员都在用什么工具?
...总有一款工具是属于你的!本文分享自华为云社区《吐血整理:程序员都在用什么工具?》,作者:考过IE励志当攻城狮。在我认识的所有程序员里 查看详情
《吐血整理》-顶级程序员书单集
你知道的越多,你不知道的越多给岁月以文明,而不是给文明以岁月前言王潇:格局决定了一个人的梦想,梦想反过来决定行为。那格局是什么呢?格局是你能够看见的深度、广度和密度。王潇认为,格局是一本本书搭建起来的... 查看详情
吐血整理!java马士兵
首先我们先来看看这份Spring源码分析笔记Spring源码分类的一览无余,详细清晰明了!让你分分钟把握!Spring源码分析笔记手册内容,共七个部分第一部分Spring概述Spring简介Spring发展历程Spring的优势Spring的核⼼结构S... 查看详情
js常用工具函数整理
1、isStatic:检测数据是不是除了symbol外的原始数据。functionisStatic(value){return(typeofvalue==='string'||typeofvalue==='number'||typeofvalue==='boolean'||typeofvalue==='undefined'||value===null)}2、isPrimitive: 查看详情