最近一直忙于实时流任务的开发。
坏处处,好在成功克服了。
经常想做技术的乐趣,在于解决一个难题时的喜悦。
。
多日后,我们正式进入大数据平台的收集文章。
希望能带给小伙伴们的喜悦。
文章目录
-
- 一、预热大数据采集
- 二、大数据采集之来源
-
- 2.1 日志采集
-
- 2.1.1 浏览器页面日志
- 2.1.2 无线客户端 App 日志采集
- 2.2 采集多源异构数据
- 三、大数据采集工具
-
- 3.1 日志采集工具
- 3.2 多源异构数据采集工具
- 3.3 爬虫的外部数据
一、预热大数据采集
在之前「从 0 到 1 搭建大数据平台之开篇」,对大数据平台框架进行了详细分析。
一步一步前进,一层到八层,贼高贼高。
。
选择大数据平台的朋友一定是传统的关系数据库不能满足业务的存储计算要求,面临着。
要使用大数据平台的计算能力,首先要做的就是集成数据。
,将需要处理的数据导入大数据平台,利用大数据平台的计算能力处理数据。
二、大数据采集来源
「从 0 到 1 搭建大数据平台的开始」我们知道大数据的特点。
: 大而复杂的数据集。
:文本、图片、视频、音频等数据类型的多样性。
:数据的产生呈指数爆炸式增长,需要处理数据的速度越来越高。
数据类型大致分为结构化数据、半结构化数据和非结构化数据。
数据类型 | 区别 |
---|---|
结构化数据 | 抽象表示二维数据库表。以数据库数据和文本数据为结构化数据。 |
半结构化数据 | 在结构化和非结构化之间,主要是指 XML、HTML、JSON 文档、Email 等等,也可以称为非结构化 |
非结构化数据 | 未以预定义的方式组织数据,不能使用图片、图像、音频、视频等二维表抽象 。 |
,根据海量数据的不同类型,选择合适的工具,实现数据集成到大数据平台的过程。
一般来说,数据源主要有两种类型。
1.各业务系统的关系数据库可称为业务交互数据。主要是业务交互过程中产生的数据。例如,当你去大型医疗保健时,你必须使用支付宝、淘宝购物和其他过程产生的相关数据。通常存储在 DB 中,包括 Mysql,Oracle。
2.各种埋点日志可称为埋点用户行为数据。主要是用户在使用产品时与客户端互动产生的数据。例如,页面浏览、点击、停留、评论、拇指、收集等。,夜深人静的时候,你躲在被子里,用快播神器看不知名的大片,会导致数据被捕获。
事实上,还有数据源,就是爬行数据。IP 我们通常爬取相应的网站数据存储地址等数据。
:从日志、数据库、爬虫等方面收集大数据。
2.1 日志采集
2.1.1 浏览器页面日志
浏览器页面日志采集主要分为两类。
: 页面浏览日志是指当 浏览器加载显示页面时收集的日志。本日志的主要价值在于两个基本指标:页面浏览量(PV)和访客数(UV)的统计。
:也就是说,用户行为数据的收集主要是用户在产品使用过程中与客户端交互产生的数据。
2.1.2 无线客户端 App 日志采集
众所周知,日志来集主要用于后续数据分析。
移动数据采集。
一是协助开发者分析各种设备信息,为开发者服务;
二是帮助各方 APP 更好地了解用户和用户 APP 各种行为,帮助各种应用不断优化,提升用户体验。
一般来说,App 采集日志采集 SDK 来完成。
然而,它的收集方式不同于浏览器日志。移动终端的日志收集 根据不同的用户行为,将事件分为无线客户端日志 最小单位。
2.2 采集多源异构数据
业务系统的数据类型多种多样,包括关系数据库的结构化数据。
如 MySQL、Oracle、DB2, SQL Server 等等 数据库的非结构化数据,如 HBase、 MongoDB 等等,这些数据通常存储在数据库表中。
以文件的形式存储数据,如文件系统 FTP,存储阿里云对象等。
,将数据源的数据读取并转换为中间状态,并在目标数据系统中将中间状态的数据转换为相应的数据格式。
三、大数据采集工具
正如上面所说,对于不同的数据源,选择的大数据采集组件是不同的。
俗话说,好马配好鞍。
面对如此多的数据源,我们如何选择大数据采集技术栈?
我们已经知道大数据收集的数据来自日志、数据库和爬虫。
接下来,解释每个数据源中使用的工具。
3.1 日志采集工具
日志收集工具目前应用广泛,Flume、Logstash、Filebeat、Fluentd。
我们知道用来收集日志数据的工具。
那么这么几款日志收集工具,小伙伴一定会说。
如何选择也是一个问题。
Flume: Cloudera 它提供了一个高可用、高可靠、分布式的大量日志采集、聚合和传输系统,支持定制日志系统中的各种数据发送者来收集数据;同时,Flume 提供简单处理数据并写入各种数据接受者(可定制)的能力。
Logstash: 具有实时管道功能的开源数据收集引擎。Logstash 不同数据源的数据可以动态统一,数据可以标准化到您选择的目的地。
Filebeat: 轻量级日志传输工具,监控指定的日志文件或位置,收集日志事件并转发到 Elasticsearch 或 Logstash 进行索引。
Fluentd: 收集、处理和转发日志的系统。富的插件系统,可以收集来自于各种系统或应用的日志,转化为用户指定的格式后,转发到用户所指定的日志存储系统之中。
大数据日志采集工具,有很多种,小伙伴们可以根据自己的业务需求,进行合适选择。
3.2 多源异构数据的采集工具
目前公司项目,离线数据的集成与同步,利用大数据采集技术栈进行多源异构数据的导入导出的使用比较多。
多源异构数据采集的大数据技术栈,目前广泛的是 Sqoop、Datax。
1、: SQL–to–Hadoop。正如 Sqoop 的名字所示,主要用于在 Hadoop、Hive 与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。
其架构如下所示
Sqoop 工具接收到客户端的 shell 命令或者 Java api 命令后,通过 Sqoop 中的任务翻译器将命令转换为对应的 MapReduce 任务,而后将关系型数据库和 Hadoop 中的数据进行相互转移,进而完成数据的拷贝。
2、:阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。
DataX 本身作为离线数据同步框架,采用 Framework + plugin 架构构建。将数据源读取和写入抽象成为 Reader/Writer 插件,纳入到整个同步框架中。
其架构如下所示:
DataX 在设计之初就将同步理念抽象成框架+插件的形式.框架负责内部的序列化传输,缓冲,并发,转换等而核心技术问题,数据的采集(Reader)和落地(Writer)完全交给插件执行。
- Read 数据采集模块,负责采集数据源的数据,将数据发送至 FrameWork。
- Writer 数据写入模块,负责不断的向 FrameWork 取数据,并将数据写入目的端。
- FrameWork 用于连接 reader 和 write,作为两者的数据传输通道,处理缓冲,流控,并发,转换等核心技术问题。
以上为最常用的异构数据源采集工具,至于小伙伴们要选择哪个技术栈都是根据自己的业务需求的。
:Sqoop依赖于Hadoop生态对HDFS、Hive支持友善,在处理数仓大表的速度相对较快,但不具备统计和校验能力。
DataX无法分布式部署,可以在传输过程中进行过滤,并且可以统计传输数据的信息,因此在业务场景复杂(表结构变更)更适用,同时对于不同的数据源支持更好。
且DataX的开源版本目前只支持单机部署,需要依赖调度系统实现多客户端,同时不支持自动创建表和分区。
3.3 外部数据之爬虫
简单的来说,网络爬虫就是自动从互联网中定向或不定向的采集信息的一种程序。
目前常用的爬虫工具是Scrapy,它是一个爬虫框架,提供给开发人员便利的爬虫API接口。开发人员只需要关心爬虫API接口的实现,不需要关心具体框架怎么爬取数据。
Scrapy框架大大降低了开发人员开发速率,开发人员可以很快的完成一个爬虫系统的开发。
至此,我们就已经通过大数据采集技术栈把不同来源的海量数据采集至大数据平台。
好了,今天就聊到这里,
更多精彩内容请关注 👇「脚丫先生」🔥: 一枚热衷于分享大数据基础原理,技术实战,架构设计与原型实现之外,还喜欢输出一些有趣实用的编程干货内容,与私活案例。 更多精彩福利干货,期待您的关注 ~