阿⾥云服务搭建离线数据仓库(⼀)
使⽤到的阿⾥云服务:
DTS:数据同步,可以做数据增量与全量同步,增量同步是监控MySql的binlog⽇志做的增量。
DataWorks:集调度运维⼀体化平台,可以调度已创建好的任务,有⾃⼰的调度中⼼和运维中⼼、数据中⼼。
MaxCompute:离线数据计算引擎,类似于spark、flink,只不过MaxCompute(简称:MC)是阿⾥云⾃⼰开发的计算引擎,⽬前MC 服务已覆盖全球16个国家和地区,客户遍及⾦融、互联⽹、⽣物医疗、能源、交通、传媒等⾏业,为全球⽤户提供海量数据存储和计算服务。MC的多个客户案例荣获“2017⼤数据优秀产品和应⽤解决⽅案案例”奖。此外,MC、DataWorks以及AnalyticDB代表阿⾥云⼊选了Forrester Wave™ Q4 2018云数据仓库报告。(总之有国⼈提前踩过很多坑,⽬前算是成熟的产品,)
此篇⽂章知识以⾃⼰搭建的经验为基础给⼤家提供⼀下不同⼯具搭建的数仓流程,仅供参考(万⼀你下家公司⼤数据使⽤的是阿⾥云服务呐~~)
1.确定业务需求,从我们业务数据库中导⼊数据到DataWork⾥⾯
①业务需求
向我们做⼤数据的⼀般都是统计某某指标,但是因为数据量太⼤,在业务数据库中进⾏统计会影响性能和影响业务的正常运转,所以就把统计指标的这部分功能放到了⼤数据组,但是这是业务数据库,数据量差不多⼏个亿吧⽇增千万左右,⽽我们统计的指标可以分为两部分,⼀部分是供业务使⽤,就是在我们的应⽤服务上会有显⽰前⼀天某个个⼈消费了多少钱,那些⾜迹,⽇、周、⽉、年的消费统计之类的,这部分是业务数据,另⼀部分的统计是跟我们领导后台观看的,这部分就不是以⽤户为维度进⾏的统计,⽽是以时间为维度进⾏统计,例如今天在我这个平台⼀共销售了多少、那些商品销售的最多之类的统计,这⼀步需要做的是主要确定好那些业务表要被导⼊到DW⾥⾯。
②数据导⼊
使⽤DTS服务,把存放在mysql⾥⾯的业务数据导⼊到MC⾥⾯,⼀般选择的是DTS的数据同步服务,DTS数据同步服务,导⼊数据的⽅式是先全量导⼊后增量导⼊,但是全量导⼊的时候可能会出现数据重复的问题,⽽且DTS导⼊到DW会有⼀个差不多5分钟的数据延迟(DTS导⼊其他都是实时,只有到MC是有时间延迟的,官⽅⽂档有,我不到了),所以使⽤DTS实时增量在MC⾥⾯做实时同步这⼀个就不可能实现了,但是如果业务需求可以容忍数据延迟的问题,那么也是可以做的。DTS导⼊到MC会⽣成两张表,⼀张base表,存放着,同步之前全量数据(有可能存在重复数据),⼀张log表(同步之后的增量数据),这两张表的命名都是源表名+_base或源表名+_log,⽽且在log ⾥⾯是有⼏个默认字段(record_id,operation_flag,utc_timestamp,before_flag,after_flag)
通过这些字段来区分哪些是新数据,哪些是旧数据,⽽且可以取到某⼀时间的增量数据,base表是没有分区的,但是log表在进⾏DTS数据同步设置的时候就可以设置这张表的分区,分区只能选择阿⾥设置的不可以⾃⼰设置,阿⾥默认的分区(年、⽉、⽇、时、分),分区是有限制的(⼀张表的分区最多为60
000),⽽且设置分区会,如果分区的数据不是很多,那么就会有很多个⼩⽂件,好处就是数据快,花费少。
开发一个平台需要多少钱2.在DW⾥⾯创建业务流程
①创建业务流程
DW是⼀体化的开发、测试、运维的⼤数据平台,⼀般通过DTS导⼊MC的数据,我们在我们的DW的数据地图的服务⾥⾯是可以看到我们导⼊进来的数据(同⼀个源表,会有对应⽣成两张表,⼀张base,⼀张log,根据表的存储量,就可以判断这张表⾥⾯有没有数据)
确定表已经导⼊进来后就可以做业务流程的创建了。
业务流程⾥⾯有⼏个选项,可以按照⾃⼰的喜好去创建流程,⼀般流程分为
我们使⽤的都是sql,像是Spark、py、MR等都是需要开发代码,但是sql的话只需要写sql 语句就可以,这个因⼈⽽异,最终的结果都是⼀样的 通过业务数据,经过你写的流程处理,把处理好的结果放到⼀张新的表⾥或者把新的表的结果同步给业务数据库那边。
这就是⼀个简单的业务流程,通过离线数据同步(类似DTS,只不过增量同步设置⿇烦,如果⾃⼰的业务表没有创建⽇期和更新⽇期的话就没办法做增量同步,还是建议使⽤DTS,这⾥只是做测试)可以同步MySql的数据,再通过⼀个sql组件做中间的处理,因为这个sql是有时序性的,必须等我两个离线同步完成后才可以进⾏操作,但是使⽤DTS同步的可以忽略这⾥的离线同步。经过sql 的处理,把处理的结果插⼊到新的表⾥,在通过离线同步,吧MC⾥⾯的表同步到外⾯的业务数据库MySql⾥⾯。这就是⼀个
简单业务的流程。
②测试
业务流程写完,我们得导⼊数据进⾏测试,看我们的计算结果对不对。
我们点击开始运⾏就可以了,如果中间有问题就会像我图中sql后⾯的红⾊叉号,代表这个流程的这个节点运⾏失败,这时候我们就得去查看运⾏⽇志,看⼀下是哪些问题导致的。,当运⾏成功后,我们要进⾏调度设置
设置我们每⼀个节点的调度时间和周期,设置好以后点击第⼀张图的提交到⽣产环境的提交按钮,然后点击我们左上⾓
选择运维中⼼,进⼊到我们的运维界⾯
3.运维
在运维中⼼,我们点击周期任务运维,就可以看到我们提交上来的任务实例,在这个⾥⾯我们可以做测试或者补数据的操作,测试,就是测试我们的流程是否运⾏正常,补数据,是补以往的数据,如果周期调度都正常的话,我们这个业务离线数仓就算搭建完成了,每天都会按照调度的时间进⾏调度,⽽我们
每天只需要检查任务是否运⾏成功就可以。
4.总结
阿⾥云服务,⽤起来是挺省⼼,⼜⽅便,基本上不是⼤数据专业的⼈经过培训也是可以进⾏操作的,降低了⼤数据的门槛,但是这个也不是个性化的,个性化的MC部署要花钱,运算要花钱,查询也要花钱,维护更要花钱,但如果公司想省⼼的话还是阿⾥云的服务相对较好⼀些,如果换成本地的数仓,机器成本、⼈员成本、运维成本、还有⼀些不可抗⼒的风险之类的,对于⼩公司来说压⼒更⼤⼀些,但是使⽤了阿⾥云,基本上⼀个普通的开发⼈员经过培训就可以上岗(排除⼤数据建模建仓),运维都是阿⾥云这边要去做的,很多⼯具都是⽆缝衔接的,更有api和sdk,可以⾃⼰进⾏对接开发,⼯具就是那个⼯具,不要把⼯具当成⽣存的依靠,技术的成长,阅历的提⾼、丰富的经验才是⼈的财富~~~第⼀篇博客 就写这么多 零零散散 有很多没有介绍清楚的建议⼤家去官⽹看⽂档,虽然有些⽂档描述的不够准确,但是也是有参考依据的也可以加阿⾥云的交流。以后介绍⼤数据的⼯具或者框架的话会更细致点....这篇主要是思路,写的不好~~欢迎⼤家多批评指正。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。