大数据采集和抽取怎么做?这篇文章终于说明白了!

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 数据是数据中台\数据平台核心中的核心,因此数据汇聚必然是数据中台/平台的入口,本文详细讲述采集模块的方方面面、采集框架的使用选型以及企业真实落地

本文来源于公众号【胖滚猪学编程】,转载请注明出处!

关于数据中台的概念和架构,我们在大白话 六问数据中台和数据中台全景架构及模块解析!一文入门中台架构师!两篇文章中都说明白了。从这一篇文章开始分享中台落地实战。

其实无论是数据中台还是数据平台,数据无疑都是核心中的核心,所以闭着眼睛想都知道数据汇聚是数据中台/平台的入口。纵观众多中台架构图,数据采集与汇聚都是打头阵的:

10691149_055ec86555483798

本文将从以下几个方面分享数据采集的方方面面:

一、企业数据来源
二、数据采集概念和价值
三、数据采集常用工具
四、数据采集系统设计原则
五、数据采集模块生产落地分享

有来源才能谈采集,因此我们先来归纳下企业中数据来源。

数据来源

企业中的数据来源极其多,但大都都离不开这几个方面:数据库,日志,前端埋点,爬虫系统等。

  • 数据库我们不用多说,例如通常用mysql作为业务库,存储业务一些关键指标,比如用户信息、订单信息。也会用到一些Nosql数据库,一般用于存储一些不那么重要的数据。
  • 日志也是重要数据来源,因为日志记录了程序各种执行情况,其中也包括用户的业务处理轨迹,根据日志我们可以分析出程序的异常情况,也可以统计关键业务指标比如PV,UV。
  • 前端埋点同样是非常重要的来源,用户很多前端请求并不会产生后端请求,比如点击,但这些对分析用户行为具有重要的价值,例如分析用户流失率,是在哪个界面,哪个环节用户流失了,这都要靠埋点数据。
  • 爬虫系统大家应该也不陌生了,虽然现在很多企业都声明禁止爬虫,但往往禁止爬取的数据才是有价值的数据,有些管理和决策就是需要竞争对手的数据作为对比,而这些数据就可以通过爬虫获取。

数据采集与抽取

刚刚说了这么多数据,可是它们分散在不同的网络环境和存储平台中,另外不同的项目组可能还要重复去收集同样的数据,因此数据难以利用,难以复用、难以产生价值。数据汇聚就是使得各种异构网络、异构数据源的数据,方便统一采集到数据中台进行集中存储,为后续的加工建模做准备。

  • 数据汇聚可以是实时接入,比如Flume实时采集日志,比如Canal实时采集mysql的binlog。

  • 也可以是离线同步,比如使用sqoop离线同步mysql数据到hive,使用DataX将mongo数据同步到hive。

技术选型

数据采集常用框架有Flume、Sqoop、LogStash、DataX、Canal,还有一些不算很主流但同样可以考虑的工具如WaterDrop、MaxWell。这些工具的使用都非常简单,学习成本较低。只不过实际使用中可能会有一些细节问题。但是总体来说难度不大。

所以重点还是应该了解每种工具的适用范围和优缺点。然后想清楚自己的需求是什么,实时还是离线?从哪种数据源同步到哪里?需要经过怎么样的处理?

Flume

Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。
Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中。

10691149_32b23dc0ffc89682

Logstash

Logstash 即大名鼎鼎的ELK中的L。Logstash最常用于ELK(elasticsearch + logstash + kibane)中作为日志收集器使用

10691149_d803b0a65ca88ee0

Logstash主要组成如下:

  • inpust:必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
  • filters:可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
  • outpus:必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd

Sqoop

Sqoop主要用于在Hadoop(HDFS、Hive、HBase)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

10691149_488139a284fb4105

Datax

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

10691149_13f214e993ff230a

所支持的数据源如下,也可自行开发插件:

类型 数据源 Reader(读) Writer(写) 文档
RDBMS 关系型数据库 MySQL
Oracle
SQLServer
PostgreSQL
DRDS
通用RDBMS(支持所有关系型数据库)
NoSQL数据存储 OTS
Hbase0.94
Hbase1.1
Phoenix4.x
Phoenix5.x
MongoDB
Hive
Cassandra
无结构化数据存储 TxtFile
FTP
HDFS
Elasticsearch
时间序列数据库 OpenTSDB
TSDB

Canal

canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
10691149_770fb1a502230c3b

怎么用呢?启动canal-server 连上MySQL,再使用canal-client连接canal-server接收数据变更消息,拿到对应表和变更数据之后自行触发对应业务逻辑。更通用的是使用canal把数据变更直接投递到消息队列,使用消息队列消费者来处理逻辑,另外还支持canal落地到ES等地方。图中已经很详细了!

由于篇幅问题,本文不对这些工具做详细对比,想知道它们的优缺点吗?想知道该如何选型吗?去公众号【胖滚猪学编程】找答案吧!

数据落地

采集之后必然需要将数据落地,即存储层,常见的有:

  • MYSQL、Oracle
  • Hive、Hdfs
  • HBase
  • Redis
  • ElasticSearch
  • Tidb
  • Mongo

学习Hive、HBase、ElasticSearch、Redis、请关注公众号【胖滚猪学编程】吧!

需要说明的是,数据采集之后往往会先发送给Kafka这种消息队列,然后才真正落地到各种存储层中。

数据汇聚设计原则

从中台的角度来考虑,笔者认为,数据汇聚层的设计需要考虑几个关键的因素:

  • 设计之初就应该考虑支持各类数据源 ,支持不同来源、不同类型的数据源。数据汇聚层不是为某一种数据而生的,应该做到通用化。

  • 需要支持不同时间窗口的数据采集,实时的、非实时的、历史的。

  • 操作友好简单,即使是不懂技术的人,也可以方便的操作,进行数据同步;举例mysql同步到hive,你不应该让用户去填写复杂的sqoop任务参数,而是只需要选择源表和目的表,其他事情都交给中台去完成。

  • 合理选择存储层,不同数据源应存储在不同的地方,比如日志数据肯定不适合mysql。

本文来源于公众号【胖滚猪学编程】,转载请注明出处!

生产落地分享

笔者马上要开始分享公司真实落地案例了!网上文章千篇一律,极少数会有实战落地分享!也欢迎各位大佬指教!

首先刚刚说到设计原则,应该考虑支持各类数据源 各类落地,应该分别考虑离线和实时采集、应该要操作友好简单,不懂技术也可操作。我们整体的设计也是以这几个原则作为指导的。想分别从离线和实时采集方面介绍一下公司落地方案:

离线采集

离线同步方面、在我司主要是会采集抽取如下图所示的几个数据源数据,最终落地到HIVE或者TIDB,落地到HIVE的作用我就不多说了,大家都比较熟悉。而落地到TIDB主要是支持实时查询、实时业务分析以及各类定时跑批报表。

下面通过mysql自助化同步到hive为例,分享自助化离线数据采集模块的系统设计。

首先通过数据中台源数据管理模块,将数据源的信息一一展示出来,用户按需勾选同步:

10691149_027776983cdcd3f4

同步支持全量同步以及增量同步,支持附加配置,比如脱敏、加密、解密等。由于需要规范数仓表名、因此目的表名由系统自动生成,比如mysql同步到hive统一前缀ods_(后续在数仓规范中会详细说明,敬请关注公众号【胖滚猪学编程】)

10691149_3b407c372c4d2d6c

用户点击确认同步之后,首先会经过元数据管理系统,从元数据管理系统中查询出同步任务所需要的元信息(包括ip,端口,账户密码,列信息),组装成sqoop参数,将同步信息(包括申请人、申请理由、同步参数等信息)记录到mysql表中。然后调用工单系统经过上级领导审核。

工单系统审核后发消息给到mq,通过mq可实时获取到工单审核状态,如果审核通过,则在调度系统(基于EasyScheduler)自动生成任务,早期我司选择Azkaban,后来发现EasyScheduler多方面都完胜Azkaban,尤其在易用性、UI、监控方面。

10691149_b1fc6d0af3dde027

从图中可知mysql同步到hive涉及三个流程节点,以user表增量同步为例,第一步是通过sqoop任务将mysql数据同步到hive的ods_user_tmp表,第二步是将ods_user_tmp的数据merge到ods_user中(覆盖原有分区),第三步是做数据检验。

除了mysql同步到hive,其他数据源的同步也大同小异,关键是定义好流程模板(通常是shell脚本)和流程依赖,然后利用调度系统进行调度。

实时采集

实时采集模块,我司是基于Flink实时计算平台,具有如下特性:

  • 支持多种数据源:Kafka、RocketMq、Hive等
  • 支持多种落地:Kafka、JDBC、HDFS、ElasticSearch、RocketMq、HIVE等
  • 通用sql处理:数据处理直接配置一条sql即可
  • 告警策略:支持多种告警策略,如流计算堆积batch的监测、应用的启动退出等。

在设计原则上,也充分考虑了扩展性、易用性,source、process、sink\dim(维表)均为插件化开发,方面后续扩展,界面化配置,自动生成DAG图,使得不懂技术的人也可以很快上手进行流计算任务开发:

10691149_c3d987134bf092e7

10691149_324c1588c2012b1e

由于篇幅问题,细节问题不能一一说清,本人将在公众号【胖滚猪学编程】持续分享,欢迎关注。
wchat1

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
7月前
|
安全 网络安全 网络架构
网络开发过程详细知识点
网络开发过程详细知识点
61 0
|
监控 项目管理
通俗易懂的方式理解项目管理的49个过程(追妹子案例)
通俗易懂的方式理解项目管理的49个过程(追妹子案例)
144 0
|
人工智能 数据可视化 数据挖掘
你只管提需求,大模型解决问题:图表处理神器SheetCopilot上线
你只管提需求,大模型解决问题:图表处理神器SheetCopilot上线
254 0
|
uml 开发者 Windows
推荐5款冷门小工具,看一看有没有你喜欢的?
每个人的电脑中都会安装很多软件,可能还保留着很多不为人知的冷门软件。不过虽然冷门,但绝不意味着低能,相反很多冷门软件的功能十分出色。闲话少说,接下来我就给大家推荐5款冷门小工具,看一看有没有你喜欢的。
192 0
推荐5款冷门小工具,看一看有没有你喜欢的?
|
存储 SQL XML
搜索引擎项目开发过程以及重难点整理(一)
搜索引擎项目开发过程以及重难点整理(一)
556 0
搜索引擎项目开发过程以及重难点整理(一)
|
SQL 自然语言处理 搜索推荐
搜索引擎项目开发过程以及重难点整理(二)
搜索引擎项目开发过程以及重难点整理(二)
147 0
搜索引擎项目开发过程以及重难点整理(二)
|
消息中间件 Java 关系型数据库
pmq学习一-一些典型的使用和套路
pmq是信也科技开源的一款消息中间件,虽然没有RocketMQ和Kafka出名,但是里面的代码还是有值得我们学习的地方的。 pmq的源码里面很多套路还是值得学习的,说实话,这些都是可以用到项目里面的。下面的代码来源于pmq。 首先安装好maven、mysql,对下载下拉的包进行打包: 如果遇到时区问题,则可以调整时区问题。 1.MqBootstrapListener 观察者模式的使用
214 0
pmq学习一-一些典型的使用和套路
|
存储 Kubernetes 前端开发
appsmith 怎么用?评价如何
AppSmith 是印度一家创业公司开发的低代码开发工具,它的原型是另一家名叫 Retool 的美国的创业公司。AppSmith 从 2019 年开始开发,到现在已经发行了 1.x 版本,也就是处于正式发行状态。那么 Appsmith 到底怎么样?它的评价如何?对比卡拉云它有哪些优缺点呢?
1620 0
|
SQL 数据采集 分布式计算
用户画像有什么用?怎样用?6个场景案例给你讲明白
在大数据分析中,对用户行为进行分析挖掘又是一个重要的方向,通过对用户行为进行分析,企业可以了解用户从哪里来,进入平台后进行了哪些操作,什么情况下进行了下单付款,用户的留存、分布情况是怎样的等。