网址:阿里DataWorkers网址:数据集成概述 - 大数据开发治理平台 DataWorks - 阿里云
目录
网址:阿里DataWorkers网址:数据集成概述 - 大数据开发治理平台 DataWorks - 阿里云
一、DataWorks 工作流程
1、数据集成
也就是数据的同步,包括抽数、导数
在离线数仓中也叫 离线同步
(1)数据同步过程中几个必要的东西
1)数据源
包括从哪来到哪去,可以是数据库,也可以是别的,比如FTP、ES等
2)表
来源表 目标表
3)字段映射关系
4)同步方式/同步逻辑
mysql -》hive
全删全查--先清空hive表的某些分区,再插入
直接插入
hive--》mysql
全删全查
直接插入
主键冲突 update
hive --》 mysql 一般称为 回流
同步方法:1、直接对mysql业务库进行操作。优缺点:操作简单;但是风险较大
2、写到kafka,让java后端去消费
kafka,消息中间 件 hive ->kafka ->mysql
中间多了一层,离线数仓称为生产者,java后端称为消费者
特点:较为安全,但是开发比较麻烦
3、api接口
产生统一的api接口,供java同事去调用,dataworkers有相应的功能,
api接口一般是一行数据,一个JSON
4、还是将数据写到mysql,但是是接口端的mysql
hive ---》 mysql(接口库) --》接口 --》mysql业务库
5)同步时间,多久同步一次
linux crontab
2、数据开发
(1)写sql,但又不止写sql
(2)调度配置
时间配置:什么时候运行?多久运行一次?
生效时间范围:比如 2022-4-9 ~ 2022-4-10
SLA:设置任务的超时时间,比如设置一小时,也可以设置具体的时间,时效性
依赖设置:哪些任务跑完了,我才可以跑
重跑设置:是否出错,自动重跑?重跑几次?是否可以手动重跑?
其它:代码提醒,比如写一个表 dwd_order_ ,可以提醒补全(主要依靠元数据)
血缘关系,一大段sql,平台可以将其中所有表的依赖解析出来
版本,谁编辑过,编辑了几次,为什么编辑,可以回滚?
代码搜索:
3、运维工作
(1)大体如下
(2)周期任务 实例DAG图(有向无环图)
(3)任务状态
启动 、停止 、暂停(冻结)、 解冻
(4)补数据
作用 1:例如hive加了个字段,那我可能要基于业务去重跑某个时间段的数据
2:做测试用,重跑某一天的某个分区的数据
3:调度任务失败后,重跑
4、数据治理
(1)数据访问控制
例如分析师想要看某个做好的ADS表,他申请,你审批
(2)数据质量 单独拿出来说
5、数据地图
包含了表,字段,分区,数据量,上下游依赖等等信息(从元数据搞来)
二、数据质量(重要)
1、情景:
比如有些任务我们跑成功了,但是数据不对,下游分析师或者业务发现,告知我们。
例如,有一个app弹窗,里面放的是优惠券的链接,里面的数据是自己做的,原本按照业务要求只需要发一万张,但是却发了十万人,这就会造成资损。
2、主要的数据质量校验规则
(1)主键重复检测
having count(distinct id) > 1
(2)表数据量检测
数据量多也不行,少也不行,没有更不行
没有数据:是否为空? count(1) 是否大于 0 ?
多也不行,少也不行:表数据量波动阈值,假如每天的数据量大约是1万条左右,我们设置阈值为50%,当突然有一天数据量达到 2万条,就会警告等。
N天平均值波动,方差波动,周期波动
(3)某些重要计算列检测
比如一个存放百分比的列,里面值都为小于1大于0的小数,我们可以置该列最大值为1,出现大于1 的报错
三、思考整理
1、ELASTICSearch
(1)是什么?
Elasticsearch,基于Lucene,隐藏复杂性,提供简单易用的RestfulAPI接口、JavaAPI接口(还有其他语言的API接口)。
Elasticsearch是一个实时分布式搜索和分析引擎。它用于全文搜索、结构化搜索、分析。
(2)适用场景
1)维基百科,类似百度百科,牙膏,牙膏的维基百科,全文检索,高亮,搜索推荐。
2)The Guardian(国外新闻网站),类似搜狐新闻,用户行为日志(点击,浏览,收藏,评论)+ 社交网络数据(对某某新闻的相关看法),数据分析,给到每篇新闻文章的作者,让他知道他的文章的公众反馈(好,坏,热门,垃圾,鄙视,崇拜)。
3)Stack Overflow(国外的程序异常讨论论坛),IT问题,程序的报错,提交上去,有人会跟你讨论和回答,全文检索,搜索相关问题和答案,程序报错了,就会将报错信息粘贴到里面去,搜索有没有对应的答案。
4)GitHub(开源代码管理),搜索上千亿行代码。
5)国内:站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析(ES热门的一个使用场景)。
(3)特点
1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司
2)Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)
3)对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂
4)数据库的功能面对很多领域是不够用的(事务,还有各种联机事务型的操作);特殊的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;Elasticsearch作为传统数据库的一个补充,提供了数据库所不能提供的很多功能
2、kudu
(1)是什么?
Kudu 是一个针对 Apache Hadoop 平台而开发的列式存储管理器。
(2)架构
Kudu也采用了Master-Slave形式的中心节点架构,管理节点被称作Kudu Master,数据节点被称作Tablet Server(可对比理解HBase中的RegionServer角色)。一个表的数据,被分割成1个或多个Tablet,Tablet被部署在Tablet Server来提供数据读写服务。
Kudu Master在Kudu集群中,发挥如下的一些作用:
1. 用来存放一些表的Schema信息,且负责处理建表等请求。
2. 跟踪管理集群中的所有的Tablet Server,并且在Tablet Server异常之后协调数据的重部署。
3. 存放Tablet到Tablet Server的部署信息。
Tablet与HBase中的Region大致相似,但存在如下一些明显的区别点:
Tablet包含两种分区策略,一种是基于Hash Partition方式,在这种分区方式下用户数据可较均匀的分布在各个Tablet中,但原来的数据排序特点已被打乱。另外一种是基于Range Partition方式,数据将按照用户数据指定的有序的Primary Key Columns的组合String的顺序进行分区。而HBase中仅仅提供了一种按用户数据RowKey的Range Partition方式。
3、impala
(1)是什么?
Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。
基于Hive,使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。
是CDH平台首选的PB级大数据实时查询分析引擎。
(2)优缺点
优点:
1.基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销。
2.无需转换为Mapreduce,直接访问存储在HDFS,HBase中的数据进行作业调度,速度快。
3.使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在
同一台机器上进行,减少了网络开销。
4.支持各种文件格式,如TEXTFILE 、SEQUENCEFILE 、RCFile、Parquet。
5.可以访问hive的metastore,对hive数据直接做数据分析。
缺点:
1.对内存的依赖大,且完全依赖于hive。
2.实践中,分区超过1万,性能严重下降。
3.只能读取文本文件,而不能直接读取自定义二进制文件。
4.每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。
4、kylin
(1)是什么?
Apache Kylin 是一个开源的分布式存储引擎,最初由 eBay 开发贡献至开源 社区。它提供 Hadoop 之上的 SQL 查询接口及多维分析(OLAP)能力以支持大规 模数据,能够处理 TB 乃至 PB 级别的分析任务,能够在亚秒级查询巨大的 Hive 表,并支持高并发。
(2)特点
- 数据源和模型:主要支持Hive、Kafka
- 构建引擎:早期支持MapReduce计算引擎,新版本支持Spark、Flink计算引擎。除了全量构建外,基于时间的分区特性,支持增量构建。
- 存储引擎:构建好的Cube以Key-Value形式存储在HBase中,通过优化Rowkey加速查询。每一种维度的排列组合计算结果被保存为一个物化视图,叫做Cuboid.
- 优化算法:Cube本身是空间换时间,也会根据算法,剪枝优化掉一些多余的Cuboid,需求平衡。
- 访问接口:支持标准SQL接口,可以对接Zeppelin、Tableau等BI工具。SQL通过查询引擎,可以被路由到对应的Cuboid上。
(3)应用场景
- 特点:Kylin在亚秒级内返回海量数据的查询结果。
- 巨大的数据量,单个数据源表千亿行数据级别,且单个数据源达到百TB级别。
- 巨大的查询压力(查询的高并发)
- 查询的快速响应
- 下游较灵活的查询方式,需支持带有复杂条件的SQL查询。
- Kylin的核心思想是预计算,将数据按照指定的维度和指标,预先计算出所有可能的查询结果,利用空间换时间来加速查询速度。
5、Presto
(1)是什么?
Presto是一款Facebook开源的MPP架构的OLAP查询引擎,可针对不同数据源执行大容量数据集的一款分布式SQL执行引擎。
比如说,你想对存储在不同数据源中的数据,如HDFS、Mysql、HBase等通过一个SQL做查询分析,那么只需要把每一个数据源当成是Presto的Connector,对应实现Presto SPI暴露出的Connector API就可以了。
(2)优缺点
优点:
基于内存运算,减少了硬盘IO,计算更快
能够连接多个数据源,跨数据源连表查,比如从Hive查询大量网站访问记录,然后从Mysql中匹配出设备信息。
缺点:
Presto能处理PB级别的海量数据分析,但Presto并不是把PB即数据都放在内存中计算。而是根据场景,如Count,AVG等聚合运算,是边堵数据边计算,再清理内存,再读数据再计算,这种内存耗的并不高。但是连表查,就可能产生大量的临时数据,因此速度会变慢。