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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 摘要:在2017杭州云栖大会阿里云数加DataWorks专场上,阿里云产品专家代俊峰(花名:普阳)为大家分享了如何借助阿里云数加DataWorks工具进行数据集成和开发,分享了如何借助DataWorks实现从数据处理手工作坊到数据加工工厂的跨越转变。

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

 

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

 

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

1.         总体架构

2.         数据集成

3.         数据建模

4.         数据开发

5.         运维调度

859f6b0fb089638d03228ce7d2e4a386e62c3025

 

一、总体架构

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

f5bfa39cdf8e4abf74bd20cb235e991cb903a1b2

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

 

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

 

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

f5fd9d46d98924a98cea78b993b29198adc5bbba

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

 

二、数据集成

全域数据汇聚

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

87714815aad1e566944ccb73726a2b12a7454c40

 

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

74443aff39d90ba7f225ac9c94ba37b02e941c82

全程可视化

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

a858f35d2234b93e4c090031d0abb6f4eba5664b

 

三、数据开发

 

数仓规范

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

8c0027a3b5c1001652f323a5a62d97e69e6eae52

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

 

工艺流程

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

84144907b5662ca4975684bdf38e038796cfa4f3

 

功能图谱

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

5fa828300bf834d00fc2b4665e973d6500da16a6

 

数据模型层次结构

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

addc97f4fe2c7be487efae92082afb31edfc2cf4

 

数据建模

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

6055f1f361417d628cf0c48838069ae03e268a11

 

数据血缘分析

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

1a7cb5967c8b467744dcdf050540f00ab3d82444

 

业务流程单元

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

d413690ee4ba2d23219c9b82d2c076238955f255

 

代码编辑器

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

67c1fbb4b0c228c24eb68c44737299834bd27e9f

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

b69a5eedfb64531b2b0e37e8702b1210a60f88c8

 

全局调度

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

c7469f1e514f30c797064284cefe135b74d4fd06

 

工作流设计

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

5c26e66abd8e7fdeedaf2601f47f515b64286981

 

四、监控运维

任务管理

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

00229901df9aac345a99aaf07be445972b1197c2

精细周期控制

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

685ec563683bf2061e0d946beb4324c0e8ce5b37

 

智能预测

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

d50fed8b6c029a0d4c929ac7b6b548a26d1b3b56

 

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

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



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

IMG_3471


 6c4b69af9fd1b465628b63fcee73224de0b62357

阿里巴巴大数据-玩家社区 https://yq.aliyun.com/teams/6/

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

bba01b493e1c5d904e882b1c380673c6ebe49a98

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
1月前
|
存储 缓存 NoSQL
深入理解Django与Redis的集成实践
深入理解Django与Redis的集成实践
54 0
|
2天前
|
机器学习/深度学习 人工智能 jenkins
软件测试中的自动化与持续集成实践
在快速迭代的软件开发过程中,自动化测试和持续集成(CI)是确保代码质量和加速产品上市的关键。本文探讨了自动化测试的重要性、常见的自动化测试工具以及如何将自动化测试整合到持续集成流程中,以提高软件测试的效率和可靠性。通过案例分析,展示了自动化测试和持续集成在实际项目中的应用效果,并提供了实施建议。
|
15天前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
38 2
|
1月前
|
运维 Devops jenkins
DevOps实践:自动化部署与持续集成的实现之旅
本文旨在通过一个实际案例,向读者展示如何将DevOps理念融入日常工作中,实现自动化部署和持续集成。我们将从DevOps的基础概念出发,逐步深入到工具的选择、环境的搭建,以及流程的优化,最终实现一个简单而高效的自动化部署流程。文章不仅提供代码示例,更注重于实践中的思考和问题解决,帮助团队提高软件开发和运维的效率。
|
1月前
|
运维 监控 Devops
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第7天】在软件开发领域,DevOps已成为一种文化和实践,它倡导开发(Dev)与运维(Ops)之间的协作与整合。本文将引导读者了解如何通过自动化部署和持续集成(CI)的实践来提升软件交付的速度和质量。我们将探讨一些实用的工具和技术,以及它们是如何帮助团队高效地管理代码变更、测试和部署的。文章将不包含代码示例,但会详细解释概念和流程,确保内容的通俗易懂和条理性。
131 62
|
7天前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
16天前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
44 4
|
1月前
|
运维 监控 Devops
DevOps实践:持续集成与部署的自动化之旅
【10月更文挑战第7天】在软件开发领域,DevOps已成为提升效率、加速交付和确保质量的关键策略。本文将深入探讨如何通过实施持续集成(CI)和持续部署(CD)来自动化开发流程,从而优化运维工作。我们将从基础概念入手,逐步过渡到实际操作,包括工具选择、流程设计以及监控和反馈机制的建立。最终,我们不仅会展示如何实现这一自动化流程,还会讨论如何克服常见的挑战,以确保成功实施。
63 9
|
10天前
|
运维 Devops jenkins
DevOps实践之持续集成与持续交付
【10月更文挑战第32天】在软件开发的快节奏世界中,DevOps已经成为提升效率和质量的关键策略。通过将开发(Development)和运维(Operations)紧密结合,DevOps促进了更快速的软件发布和更高的可靠性。本文将深入探讨DevOps的核心组成部分——持续集成(CI)和持续交付(CD),并展示如何通过实际代码示例实现它们,以帮助团队构建更加高效和稳定的软件发布流程。
|
1月前
|
数据采集 DataWorks 数据管理
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第10天】随着大数据技术的发展,企业对数据处理的需求日益增长。阿里云推出的DataWorks是一款强大的数据集成和管理平台,提供从数据采集、清洗、加工到应用的一站式解决方案。本文通过电商平台案例,详细介绍了DataWorks的核心功能和优势,展示了如何高效处理大规模数据,帮助企业挖掘数据价值。
81 1

相关产品

  • 云原生大数据计算服务 MaxCompute