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

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

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

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

d8ba52607dcbe4070952011db84263d0.png

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

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

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

数据来源

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

  • 数据库我们不用多说,例如通常用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等众多外部存储系统中。

fd238c33f954183b600fb0addcd48952.png

Logstash

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

a74917f954ec22024c892b1739404fbf.png

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的数据导进到关系型数据库中。

e4b66b919f28c53eb616f58a04342f0a.png

Datax

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

8f36a192d24f225c07e652894fd59b47.png

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

类型 数据源 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 数据库增量日志解析,提供增量数据订阅和消费

6b5acfd044a56f1cd2b7749f5ec9ce04.png

怎么用呢?启动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为例,分享自助化离线数据采集模块的系统设计。

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

9da99e510e69bcc7e0b3c2e8c62621fb.png

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

2e654c1b327285108908ffe9eeb2309d.png

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

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

ddb813279939ba22e4d548c5776e6b5b.png

从图中可知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、sinkdim(维表)均为插件化开发,方面后续扩展,界面化配置,自动生成DAG图,使得不懂技术的人也可以很快上手进行流计算任务开发:

b43e305037a0480af57e826d2cbeae1d.png

34c1bc3f0285217365f57c35c4be28db.png

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

88a7650099d6f0a17752c49ce0905a64.png

本文来源于公众号【胖滚猪学编程】一个集颜值与才华于一身的女程序媛。以漫画形式让编程so easy and interesting。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZooKeeper应用——解决分布式系统单点故障

1.单点故障问题什么是分布式系统中的单点故障:通常分布式系统采用主从模式,就是一个主控机连接多个处理节点。主节点负责分发任务,从节点负责处理任务,当我们的主节点发生故障时,那么整个系统就都瘫痪了,那…

生活之难:生活到底难在哪里

生活之难:生活到底难在哪里 一、总结 一句话总结:难在天性,难在竞争,难在积累,难在追求,难在自己 难在天性 人的天性就是好吃懒做好玩不动脑的,但是生存的压力(食物,房子…

python中元祖 字典 列表的区别_Python中元祖,列表,字典的区别

原博文 2016-08-16 15:25 − Python中有3种內建的数据结构:列表、元祖和字典: 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。 列表中的项目应该包括在方括号中,这样Python就知道你是指明一个…

Intellij IDEA展示类中的方法树形结构

在intellij Idea中叫Structure(结构体),如下图; 也可以直接AltF7快捷键,这样默认会把Structure显示在屏幕下方,如下图操作就可以移动到右侧。 效果如下:

时间计算题100道_2019四校及分校自招开放日情况汇总(含时间安排、考试内容难度、到场人数等)...

点击上方“上海初升高”,选择“星标公众号”回复“加群”就能加入上万家长信赖的升学群受到疫情的影响,今年各市重点的自招开放日报名迟迟没有提上日程。但不管怎样,自招应该是不会取消的,以下是去年四校及分校自招开放日情况汇总…

linux I/O 栈 预习(上)

二、预习 在我们进去device mapper的dm dedup学习之前,我们先要预习一下,什么是device mapper,和为什么device mapper能够做块重删。 1、device mapper照旧,我们先看一下维基百科对它的介绍。The device mapper is a framework pr…

springboot controller 访问 404

两种解决方式: 1、因为SpringBoot的项目启动类,会只扫描该包下的文件或者改包下所有子包内的文件,只要你把该文件移动到启动类的相同目录报下就可以。 2、就是在该类上面加者在启动类上添加注解 ComponentScan(basePackages {"com.boota…

fegin需要实现类_【第24条】静态成员类优于非静态成员类

第24条静态成员类优于非静态成员类嵌套类(nested class)是指定义在另一个类的内部的类。嵌套类存在的目的应该只是为它的外围类(enclosing class)提供服务。如果嵌套类将来可能会用于其他的某个环境中,它就应该是顶层类(top-level class)。嵌套类有四种:…

Springboot 多线程的使用

直接上代码 线程配置类 package zengmg.nbpi.com.thread;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework…

vlookup函数练习_为什么职场要学excel函数?看这个案例演示:自动计算快递价格...

在上一篇文章里面,我们讲了如何整理完成一个规范化的表格,以便于下一步的函数计算。最初的信息内容如图所示。经过整理,我们得到了表2这样的规范化表格。现在,我们就通过表2来实现快递费用自动计算,最终实现图中这样的…

蓝牙芯片排行_7月TWS 全球品牌出货量排行榜出炉

数据铸造影响力撰文 / 旭日大数据编辑 / 柏序旭日大数据公布了2020年7月全球TWS品牌销量排行榜,与上期数据相比,全球品牌七排名TOP20汰换率为15%,其中DOSS,万魔、BOSE跌出前20,广州由我,Tzumi登榜&…

project 打印的时候上面的表格和下面的图例中间有个很大的空白,这块东西怎么能去掉呢?

“打印预览”的“页面设置”里面,“页面”选项卡里的“缩放”项设为1页宽,1页高就可以了, 当然如果你的任务项比较少的话,怎么调也不容易去掉下面的空白 操作如下图(下图的任务太少,去不掉空白的&#xf…

加密机工作原理_端子机压力检测装置工作原理

上期我们介绍了端子机压力管理装置的使用常识,这期我们介绍端子机压力管理装置的工作原理,端子机压接管理装置,有单通道压力监测和双通道压力监测二种,双通道压力监测装置,一般用于双头端子压接机上,一台主…

win10解决java多版本java -version问题

电脑环境 先安装了Jdk8,后安装了jdk11.(发现Jdk11没有单独的jre,官网也不提供下载,集成在一起了) Java -version 将环境变量切换为 JDK11 后 javac -version 是 java编译环境是jdk11了,但 java -versio…

vs设计窗口不见了_碳纤维的巅峰:VS沛纳海616V3

各位朋友,你们好!欢迎大家关注XYZ腕表俱乐部。专注腕表资讯,致力于做腕表拆解测评,为大家普及分享有价值的腕表知识,真正让大家实实在在透明玩表。想了解更多,欢迎搜索:XYZ腕表俱乐部。可以让您…

CSharpGL(49)试水OpenGL软实现

CSharpGL(49)试水OpenGL软实现 CSharpGL迎来了第49篇。本篇内容是用C#编写一个OpenGL的软实现。暂且将其命名为SoftGL。 目前已经实现了由Vertex Shader和Fragment Shader组成的Pipeline,其效果与显卡支持的OpenGL实现几乎相同。下图左是常规OpenGL渲染的结果&#…

SonarQube结合IDEA实现代码检测

环境准备 1.SonarQube下载:https://www.sonarqube.org/downloads/ 建议用最新版本,SonarQube与idea的结合 需要SonarQube很多插件,需要借助idea的SonarLint 插件。 不同的SonarQube版本,有不同的插件版本 idea的SonarLint 插件…

二维小波变换_【外文文献速读】实时二维水波模拟

题目:Water surface wavelets 作者:Stefan Jeschke, TomšSkřivan, MatthiasMller-Fischer, Nuttapong Chentanez, Miles Macklin, Chris Wojtan

技术开发(委托)合同怎么写?

一直基于宁波市科技局备案合同模板签订合同,并完成科技局备案工作,成功了N次,直接分享模板,该模板通过了法务审核,财务审核,只需要批示修改相关内容即可,一份技术开发委托合同,十几分…

最常用的15个前端表单验证JS正则表达式

2019独角兽企业重金招聘Python工程师标准>>> 在表单验证中,使用正则表达式来验证正确与否是一个很频繁的操作,本文收集整理了15个常用的JavaScript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(Ema…