MaxCompute/DataWorks 数据集成与开发实践

摘要:在2017杭州云栖大会阿里云数加DataWorks专场上,阿里云产品专家代俊峰(花名:普阳)为大家分享了如何借助阿里云数加DataWorks工具进行数据集成和开发,分享了如何借助DataWorks实现从数据处理手工作坊到数据加工工厂的跨越转变。

 

本文内容根据嘉宾演讲视频以及PPT整理而成。

 

从整体的角度来看,数据的开发主要包括以下五个环节:

1.        
总体架构

2.        
数据集成

3.        
数据建模

4.        
数据开发

5.        
运维调度

 

一、总体架构

其实DataWorks在2009年9月份的时候就已经开始研发了,当时还是基于Hadoop的体系进行研发的。谈到为什么要研发DataWorks这样的一个工具,其实是因为在没有DataWorks工具的时候,很多数据的开发工作是非常痛苦的,最开始做大数据分析处理的时候就是自己搭建几十台Hadoop的机器,然后写一些脚本去处理数据。当时Hive还没有出来,所以需要自己写MapReduce程序,之后包裹成shell脚本,再进行调度,但是这个过程中就会遇到很多如下图所示的问题。

即便是一个小公司,仅有几个人进行协同开发,互相之间的业务也需要进行协同调度。每个公司都会有一些开源的工具,比如很多互联网公司都会使用MongoDB、MySQL等数据库,还可能会使用一些新兴的数据库。以上这些数据库都会被一线的开发人员所使用,所以需要将数据打到这些数据库里面去。刚开始可能是使用Oracle存储了一亿条数据,然后数据仓库就跑不下去了,所以很多阿里巴巴的技术实践都是在业务的逼迫下摸爬滚打寻找到的解决方案。阿里巴巴的所有数据都会汇聚到MaxCompute里面,也是由于业务的需求或者说逼迫实现的。

 

在DataWorks长达8年的发展过程中,逐渐累积出来的一些工具,最开始的时候IDE开发环境都没有外部的界面,最开始的时候就是使用一个Notepad或者Sublime来编写代码,然后上传文件,自己进行ftp操作。阿里巴巴是一家数据驱动的公司,而对于一些非计算机专业的同学而言,可能连CPU和内存都不清楚,所以如果既需要他们去学习SQL开发,也需要去学习ftp命令,会是一件很痛苦的事情,这样也会使得公司的运转效率很低。所以后来DataWorks逐渐开发了图形化的IDE界面来做数据集成,即便是非计算机专业的同学来做一些任务也是很容易的事情。今天,阿里巴巴每天活跃的“小二”就有六千多万,他们的工作都需要依靠阿里巴巴的平台进行数据处理,这在全世界范围来看都是不可想象的。虽然当时阿里巴巴在刚开始做的时候也并没有想到会达到今天这样的规模,但是经历了这么多年的时间,才发现阿里巴巴其实真的是一家数据驱动的公司。

 

其实在数据集成方面的这些功能现在看上去非常高大上,而这些功能的实现却是由无数个阿里员工所贡献的力量一点点积累沉淀而成的,而并非某一个天才的设计师的功劳。

如上图所示的是数据工厂大图,本次将会着重分享对于研发最为重要的数据集成、数据开发、监控运维以及实时分析这几个部分的功能。

 

二、数据集成

全域数据汇聚

数据研发的第一步就是数据集成。数据集成其实是一个脏活、累活,对于小公司而言还好,而对于中型企业或者大型企业而言,就会存在很多的数据源,而针对于每一个数据源都进行单独研发则会是一件非常痛苦的事情。不同的业务需求有很多的同步方式,比如实时的binlog同步、历史数据批量或者增量同步等,而这些不同的同步方式都是随着业务的实践中经验不断积累而沉淀下来的。在阿里巴巴内部,这些都不只是一个工具,而是成熟的功能化应用,所以在这里面就会有可视化的监控工具帮助用户便捷高效地解决问题。当数据研发过程中没有错误发生的时候其实很容易,一旦发生了错误或者出现性能的瓶颈则需要很好的工具进行支撑。

 

从下图中也可以看到,DataWorks在数据集上拥有一个非常优秀的架构。

全程可视化

接下来分享DataWorks的数据集成具体是怎样实现的。DataWorks拥有一个全程可视化的界面,之前的时候其他的一些公司往往会使用Oracle或者MySQL的Load工具编写shell脚本,而对于开发人员而言,想要使用这些工具却需要记忆很多参数。但是如果公司想要成为一家业务驱动的公司可能会存在很多的BU,而这些BU不可能花费重金聘请资深的数据专家或者架构师,而更可能仅仅聘请一个不懂计算机但是懂业务的同学来实现数据同步工作。而通过使用DataWorks的图形化界面就可以解决70%~80%的数据同步问题,如果实在不行还可以使用脚本化的界面,这也都比单纯记忆许多参数要好,可以通过使用JSON格式的面向对象的配置方式解决复杂的数据系统的配置问题。阿里巴巴每天同步的数据可能会达到几十PB量级,当业务更加分化的时候,专门负责监控的角色可能会同时负责上万个数据同步任务。而其实数据集成是一个任务,这个任务下面会分为不同的Task,Task会有不同的Pipeline通道,而每个Pipeline如果出现问题都可以进行精细化的监控。

 

三、数据开发

 

数仓规范

对于整个数据开发而言,都会有一套数据仓库的开发规范,而且这套理论上规范大家都是比较认可的。对于大型的公司而言,其数据量也非常大,他们非常渴望按照阿里巴巴的数仓理论进行开发,但事实上如果没有DataWorks这套工具,大家在进行数仓开发的时候还是小作坊的开发模式。当需要将数据研发过程发展成流水线的时候,必须要有一套数仓的开发规范,来保证流水线的高效、安全和稳定,进而驱动数据的研发。

而如今数据的研发已经远远不再是早期的产生一个报表来看看数据的情况了,在阿里巴巴这样的公司中就存在数据的三字经——“聚、通、用”,其中的“聚”指的就是数据的汇聚。“通”指的是数据要融合贯通,如果数据拿过来之后,数据之间不做连接和融合以及进一步的精细化加工,数据获取就是没有任何意义的,举个常见的例子,一个交易的数据和一个退款的数据,如果将这两个数据放在一起就可以做一个交易退款的比例分析。再比如淘宝和微博关联起来,分析微博关注以及点赞、点击数据的关系。所以只有将这些数据放在像MaxCompute大型的DataLake的时候,在海量数据的关联、融合和分析中才能做到别人永远做不到的事情。

 

工艺流程

如下图所示,DataWorks实现了一整套的数据开发的工艺流程。通过基础服务的设施、数据分析、集成开发以及资源调度这样一整套流程,以及完整的角色分工可以保证数据开发过程像现代化工厂一样有生产人员和维护人员来保障数据高效稳定的产出。

 

功能图谱

下图是数据开发的核心功能图谱。正如前面所提到的,一个集成环境会拥有一个代码编辑器,如果是多人协作,一旦代码写错了,就可以与代码仓库中上一个代码版本进行对比,进而实现对于代码的管理和协同。此外,整个资源的监控与调度以及元数据管理都可以在其中得以实现。

 

数据模型层次结构

从数据研发的分层上来说,DataWorks支持不同的应用层。每个应用层都会有一个项目空间,应用层的开发和基础层的开发是分门别类的,但是他们又相互依赖,底层的数据为上层的数据提供服务,上层不同应用之间互相依赖和授权以及互相使用,这样就有一个层次结构的模型来支撑,而这个层次模型的实现也是通过DataWorks工具赋能的。

 

数据建模

从下图可以看到,DataWorks提供了数据建模的工具,如果熟悉也可以手工写一个DDR工具来创建表,这种方法也是可以的。但是如果需要做大型的任务,比如阿里巴巴在收购优酷之后,需要将优酷的数据并入阿里巴巴,其中涉及到的表非常多,所以在整个建模的过程中,一个人的思路可能是不够全面的,可能需要多人进行协同开发,而多人系统编辑模型则是一个非常麻烦和痛苦的过程。而且通过使用DataWorks,这个过程就像是使用Office 365在线协作一样,通过大家协同地编辑模型然后实现的一键式发布提交到开发环境或者生产环境,这样就极大地提高了效率。

 

数据血缘分析

下图所展现的是数据开发之前,在进行需求分析的时候的数据血缘分析。比如对于一个产品经理而言,在进行数据分析的时候往往不知道会使用哪一张表,不理解每一张表的具体含义是什么,所以效率会比较低。而在DataWorks的数据分析中,提供了数据血缘分析的工具,这样就可以知道应该使用哪一张表、这张表对于其他表产生了什么影响以及其他的表会对于这张表产生什么影响,当出现表的字段增加、减少等变化的时候会提前进行通知,使得开发人员可以事先进行维护,可以非常精细地帮助用户了解表级别以及字段级别的依赖关系,进而进行很好的数据研发。

 

业务流程单元

对于大型企业而言,在同一个工作空间下可能会发展到上百甚至上千个SQL,这时候就会变成一团乱麻,难于维护。而DataWorks有业务流程的概念,可以把相关的业务整合起来形成一个完整、高效的面向业务的流程。

 

代码编辑器

其实产品的关注点就是无穷无尽的细节,下图所展现的就是DataWorks中还在进行研发的功能。普通情况下,可能只需要写两三百行SQL代码,而当业务越来越复杂的时候,可能典型的SQL需要500行,比较复杂的SQL可能会达到2000行甚至3000行。其实在写SQL的时候,大家会注意到往往会有很多的from、join等,在看代码的时候除了非常有经验的SQL开发人员可以一目了然地看出关系,而对于一般的开发人员而言,看这样的SQL是非常痛苦的。DataWorks所提供的编辑器非常强大,提供了代码的折叠、缩略图以及鸟瞰帮助开发人员定位代码,还可以通过SQL结构化的方式直观地看到数据共同部件的分布图,可以非常方便地帮助开发人员定位问题。

代码编辑器核心的思路就是提供一个类似于Notepad的工具让大家在里面写代码,但是它不是一个简单的文本编辑器,而是一个完全高度结构化的东西,可以从各个维度和角度将代码进行各种变换,进而帮助理解代码。正如一句程序员之间的那句名言“代码是写给人看的”,这种编辑器是为了帮助程序员提高开发效率的,帮助人理解代码。所以当我们写了SQL开发任务之后,DataWorks编辑器就可以帮助理解其内部所用到的表以及历史上、空间上以及版本变化上的关系以及结构上的语法树,可以提供非常多的结构帮助开发者理解。对于具体细节代码而言,可以提供智能的提示,甚至写一个子查询所得到的字段,在外部引用的时候也可以自动提示,以及代码的预编译以及实时的语法提醒。而这些看似简单的功能,在真正实施过程中并不是那么容易的,之所以DataWorks能够做到是因为其底层使用阿里巴巴自研的MaxCompute,技术团队之间可以实现非常紧密的协作,所以可以实现看起来很细节但是做起来非常复杂的事情。而对于复杂代码的理解,就可以借助之前提到的缩略图以及代码折叠等各种各样的展示方式帮助大家提高开发效率。

 

全局调度

最终任务发布完成之后,如果仅是一两个任务使用shell配置一下就可以了,而对于像阿里巴巴这样数据驱动的企业而言,数据加工的任务也会越来越多,如果任务数量到达1000的时候,如果没有非常好的调度工具就会做不下去了。而如图所示的调度图仅是一个小例子,这可能仅仅是阿里巴巴整个调度系统的百万分之一,仅仅是整个森林中的一片叶子。在实际业务中可以支持分钟、小时、天、周、月等周期性调度,并且可以支持千万级的并发。阿里巴巴的调度系统不同于其他的调度系统,它是基于无状态任务的,属于触发的依赖,这样就实现了非常高效的并发执行。随着业务量不断地发展,只有非常强大的调度支撑系统才能保障业务的正常运行。

 

工作流设计

DataWorks也提供了如下图所示一整套工作流的设计机制来保障业务,可以帮助用户更好地理解业务。

 

四、监控运维

任务管理

在监控运维层面,熟悉DataWorks产品的同学都知道,DataWorks提供了一套完整的数据加工工艺和数据开发规范,分为了开发环境和生产环境。而在从开发环境到生产环境之间进行代码迁移的过程中,DataWorks提供了测试的接入。其实尤其是对于一些大型企业,补数据是一件非常头疼的事情,可能晚写了一些代码上传之后认为万事大吉了,但是其实工作只完成了一半,因为需要补充之前的数据,才能进行数据的对比分析。因此DataWorks也提供了补数据的功能,用户可以将过去30天或者过去90天的数据补充起来,为下一轮数据分析提供服务。从下图也可以看出,从依赖关系到产生实例有特别多不同的实例产生进行维护,其中非常贴心的功能就是可以层层展开,可以看到每一层属性的操作日志以及运行日志,也就是对于该节点做了什么事情以及该节点做了什么事情,这个节点是什么样的代码以及版本情况等,都可以在DataWorks里面进行机动化管理。如果没有这样一个环境,可能会需要用户开发无数个工具,效率就会非常低下。

精细周期控制

下图所示的是实例的精细化调度。每天的任务可以依赖小时的任务,这样会追踪并生成一个运行的实例,按照配置可以有条不紊地执行。

 

智能预测

下图所示的是智能产出的效果图。数据在使用的时候都是输出到一线的系统中,即便是晚5分钟产出都需要赔付用户的,所以必须要能够保证数据能够及时产出。

 

五、DataWorks 大数据开发核心流程

最后回顾整个DataWorks 大数据研发的流程,通过找数据、申请数据、建表、图形化拖拽的集中开发环境、临时查询的开发、集成的图形化界面、图形化的IDE环境以及监控报警等一步步实现大数据开发,以上这些都是看似非常细小的工具,但是正是这些工具保证了业务有条不紊地开展,这些工具组织起来就实现了DataWorks产品的目标。DataWorks不是一个手工作坊式的数据研发工具,而是真正的数据生产进入大规模生产、协作、监控与运维时代的高端生产工具。

欢迎加入“数加·MaxCompute购买咨询”钉钉群(群号: 11782920)进行咨询,群二维码如下:

 

阿里巴巴大数据-玩家社区 /

---阿里大数据博文,问答,社群,实践,有朋自远方来,不亦说乎……

时间: 2024-11-08 20:52:38

MaxCompute/DataWorks 数据集成与开发实践的相关文章

10年老兵带你看尽MaxCompute大数据运算挑战与实践

本文根据阿里云大数据计算平台资深架构师林伟在大流量高并发互联网应用实践在线峰会上题为<MaxCompute大数据运算挑战与实践>的分享整理而成.分享中,他主要介绍了在大数据.大流量.高并发情况下MaxCompute所面临的挑战,以及应对这些挑战的实践经验. 直播视频:点击此处观看 幻灯片地址:点击此处下载 以下为在线分享观点整理. 什么是MaxCompute? 大数据计算服务(MaxCompute,原名ODPS)是一种快速.完全托管的PB/EB级数据仓库解决方案,具备万台服务器扩展能力和跨地域

利用流程建模进行数据集成

对于诸如数据集成这类信息技术应用,流程建模是一种经过尝试并证明可行的 方法.通过对数据集成应用流程建模技术,虚拟化和标准化的问题也会涉及到. 首先,我们来了解一下流程建模的类型吧. 利用流程建模进行数据集成 流程建模是以某种详细程度展示系统相关流程的一种手段,利用指定类型 的图表通过一系列流程展示数据流.流程建模技术通常图形化地展示具体流程, 以便更清晰地理解,交流并在设计和开发系统流程中的涉众之间进一步精细化. 流程建模不像数据建模,有几种不同的流程模型类型,它与不同的流程交 互类型有关.这些

实践 —— 亲测从 RDS MySQL 通过数据集成导入 MaxCompute

我们今天要试的,是从RDS 的MySQL数据库到MaxCompute的 ODPS 的数据同步过程. 往简单了说,就是把源数据库(Read)里的数据,转移到目标数据库(Write). DataWorks 产品组里的 数据集成 提供了数据一次性搬移,以及周期性搬移的功能,搬移的细节可以在数据同步任务中设置. 一. 数据源 1. 来源数据源 申请RDS 上的MySQL就不多说了,此处的注意事项是,数据集成服务连接RDS MySQL数据库属于远程连接,需要添加连通允许的白名单,如下图所示设置: 参考链接

生态与兼容:MaxCompute大数据生态集成和开发工具

当我们在谈论关于数据生态与兼容时,我们会想到诸如OGG,Sqoop这类支持在分布式文件系统与传统的数据库间进行数据传递的工具,诸如SQL,Hadoop MR社区兼容,JDBC,ODBC的生态连接.阿里的MaxCompute大数据生态集成和开发工具做到了哪些生态连接,MaxCompute Studio你又是否有兴趣了解呢? 欢迎加入MaxCompute钉钉群讨论

大数据开发套件-数据集成-云mongo跨区域如何同步到Maxcompute

在大数据开发套件中是可以实现mongo同步到Maxcompute. 数据集成文档:https://help.aliyun.com/document_detail/47677.html?spm=5176.7750354.6.599.jGn50I后端是通过华东1区的调度资源进行数据的调度传输.但是如果阿里云mongo不在华东1在其他区域,使用默认资源组就不能正常同步了.那么就需要用户通过自己添加调度机器进行同步.1,准备一台调度服务器,要求必须和云mongo相同网络类型相同的区域.官方文档:http

MaxCompute(原ODPS)开发入门指南——数据开发工具篇

MaxCompute(原ODPS)开发入门指南--数据开发工具篇 写在最前面 >>>进入了解更多>>>阿里云数加·MaxCompute大数据计算服务. 大家在使用大数据计算服务MaxCompute时,最头疼就是我现在已有的数据如何快速上云?我的日志数据如何采集到MaxCompute上?等等...具体详见<MaxCompute(原ODPS)开发入门指南--数据上云篇>. 但是数据在MaxCompute上了之后,问题又来了,我怎么基于上面进行快速的数据开发,构建

MaxCompute(原ODPS)开发入门指南——数据上云篇

MaxCompute(原ODPS)开发入门指南--数据上云篇 写在最前面 >>>进入了解更多>>>阿里云数加·MaxCompute大数据计算服务. 根据<MaxCompute(原ODPS)开发入门指南--计量计费篇>的了解,大家清楚了MaxCompute可以做什么,计费模式如何,想必大家也开通了MaxCompute想进行一次POC,但是大家遇到第一个问题一定是我的数据如何上云? 可通过多种方式数据流入MaxCompute MaxCompute(原ODPS)提

基于DataIDE数据集成实现香港ECS上的MySQL数据同步到数加MaxCompute

最近有朋友问,客户在香港ECS上搭建的MySQl,大概有100GB以上的数据,能否通过MaxCompute做海量数据分析,我的回答是YES! 但客户担心香港与大陆之间数据连通性问题,我的回答依然是YES! 为了让更多个客户不再困扰,笔者做了一份教程,可以通过大数据开发套件中的经典网络进行同步数据,有图为证! 准备工作 1.注册并开通阿里云账号.Access id.Access Key:开通方法:https://help.aliyun.com/document_detail/47703.html?

大数据开发套件—数据集成常见问题

我们在进行大数据开发过程中,会遇到各种问题,本文将定期收集整理一些在使用阿里云数加 大数据开发套件 过程中遇到的常见问题,供大家参考~ Q: 配置数据同步任务,在选择数据源时,出现下图中的错误,该怎么办? A: 建议您刷新页面,清空缓存,重新登录. Q:数据同步时,如何进行增量同步? A: 具体操作可参考 数据增量同步 文档 . Q:新增数据源时,RDS 数据源测试连通性不通怎么办? A:当 RDS 数据源测试连通性不通时,需要到自己的 RDS 上添加数据同步机器 IP 白名单: 10.152.