开发者学堂课程【DataWorks一站式大数据开发治理平台精品课程:4.DataWorks 数据开发介绍及实践】与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/81/detail/1230
4.DataWorks 数据开发介绍及实践(一)
内容介绍
一、Why DataStudio?
二、核心能力
三、企业场景最佳实践
四、演示与实操
内容简介 DataWorks 的降本提效的核心利器数据开发,也就是 DataStudio,分享分为4个部分,第一部分 DataStudio 存在的意义以及价值,第二部分会介绍一般数据生产的流程以及 DataStudio 是怎么去支撑这些流程的。第三部分会以两个常见的场景,就是企业的分权管理协同开发以及构建数仓的关键点进行分享。第四部分是实操与演示。
一、Why DataStudio?
1.诞生
历史沿革
(1)2009 立项,2009年之前:Crontab,2009年8月:天网,( DataWorks前身)。
(2)2013 登月计划,阿里集团启动登月计划,全面从 Hadoop 转向 MaxCompute ,集群规模达5K台。
(3)2015 对外发布,DataWorks 进入公共云(D+ )、专有云市场,开始服务政企客户。 (4)2016 数加平台发布,阿里云数加品牌建立,DataWorks全新启航版本。
(5)2017 国际化,DataWorks完成全球12 + Region部署,走向国际化,开始服务全球客户。
(6)2018 发布V2.0,DataWorks V2.0全新发布,形成数据集成-数据开发-数据服务-应用开发的一站式大数据智能云研发平台。
(7)2020 发布V3.0,DataWorks V3.0全新发布,支持多引擎( MaxCompute,EMR, Flink,Hologres,ADB for Posgre)多实例、跨地域调度。
2、价值
(1)告别传统(开源)调度系统的瓶颈。 使用过开源的用户都比较清楚,当开源的集群被搭建起来后,可以通过最基本的命令行对数据进行上传计算。在构建大数据体系时,用户的工作流会非常庞大,这时就不得不借助一些开源的调度工具,比如airflow、azkaban或者 oozie 这样的工具帮助用户去调度运行整个工作流中的任务。开源的工具基本都会需要维护一个或者多个甚至几十个的配置文件,以便于去实现任务之间的依赖关系。对于非技术人员门槛非常高,即便是技术人员维护几十个上百个的配置文件,其实效率也是非常低的,而且非常容易出错,这就是开源调度系统的瓶颈所在。
(2)从 DOS 到 Windows 那么 DataWorks 究竟能给企业和个人带什么样的价值?做一个形象的比喻,假如把pcg的CPU内存硬盘放在引擎层,那么 windows 毫无疑问就在系统层。通过 DOS 命令行也能指挥计算机去做一些事情,但是有 windows 以后的效果是不言而喻的。它让PC机能够轻松的步入千家万户,让所有人都能够通过电脑办公娱乐或者是购物以及做其他的相关的一些事情。那么 DataWorks 做的事情也是类似的,企业有大数据引擎后,理论上它已经能够承接整个企业的数据需求去做一些数据计算,但是当企业的业务人员非技术人员想要去使用这些数据时,其实就会有门槛。这时企业的数据开发人员或者是前端开发后端开发可能要做一系列的工具给到这些非技术人员去使用数据去做一些可视化的分析查询。有 DataWorks 后,门槛就低了很多,业务人员只要会写 SQL,它就可以去查到计算好的数据。另外一方面也就是 DataWorks 的调度方面,也不需要用户继续写脚本,去编辑很多配置文件维持整个系统的周期调度,用户只要通过可视化的方式进行代码开发,配置依赖关系及调度周期,整个企业的数据体系就可以非常轻松的构建起来。
(3)降本提效:降低学习成本、人力成本,提升开发效率 非技术人员/菜鸟简单 上手免去调度系统开发成本 获得更流畅的开发体验 落地更科学的任务管理模式 非技术人员上手是非常快的,通过的时间统计以及一些用户的反馈,用户在参考帮助中心的 workshop,通过两个小时就可以基本掌握数据的开发以及生产的流程,那么企业他也不用再去组建工具开发团队,去开发整个调度系统,同时要去维护整个调度系统的稳定性,这些事情都不用做的,都交给 DataWorks 团队做即可。那么对于数据分析人员以及开发人员,目前DataWorks提供的可视化开发界面,包括SQL的智能编辑器,能够非常有效的去提升开发效率,并且DataWorks自带非常规范化的任务开发以及发布上线流程,能够在一定程度上帮助企业去建立内部的数据生产的机制规范,让企业的整个数据体系运行起来会更加的稳定。 这张图是阿里巴巴数据中台的生产调度环境的截图,可以查看到其中的每小绿化都是调度任务,每天阿里巴巴都有上百万个这样的任务在自动的调度运行,而这些任务就是通过DataWorks 的调度系统进行调度的。这张图中的任务量连整个阿里巴巴数据中台千分之1或者万分之1都不到,可见DataWorks的稳定性也是保定集团数据产出的非常重要的基石。
(4)降本提效:释放人力,让好钢用在刀刃上 再实际一点,对于账本直销这件事,DataWorks 都做到什么样的承诺? 数据仓库小组( 50+人) :负责建设适合于数据中台的新一代数据仓库,负责沉淀两大方法论(数据加工工艺+行业数据模型) ; 数据资产小组(8~10人) :其中2~3人做运营, 6~8人做工具定制开发(含系统集成) ; 数据质量小组( 10~15人) :其中3~5人制定流程规范、质量运营,其他人做工具定制开发(含系统集成)。 每个业务部门都有一位数据质量接口人; 数据安全小组( 10~15人) :其中超过一半做运营,其他做工具定制开发(含系统集成)。每个业务部门都有一位数据安全接口人; 工具开发小组( 10~15人) :负责相关管理工具的研发和系统集成 运维保障小组( 8~10人) :负责生产稳定性保障 以上是前两年调研的大中型企业的数据体系的状况。它的数仓小组有50多个人,同时它的整个数据体系还有其他几个小组组成,分别资产,质量,安全,开发,运维小组。可以看到每个小组中它都有一部分人是做工具开发的,另外工具开发小组以及运维小组都是直接做与工具相关的事情。假如企业的 DataWorks 加其他引擎的组合,毫无疑问它的整个数据体系的人员规模就可以从100多个人降低到50个人左右,那剩余的被剔除掉的50个人,其实就可以投身去做企业的数据业务开发,帮企业更好的打造自己的数据体系,把精力都放在业务上,把精力都放在数据上,这无疑是对企业更好的选择。
二、核心能力
1、一般数据生产流程:“数据生产”在数据全生命周期中的位置 企业会把数据传输或者同步到大数据计算引擎中,再去定义自己的数据标准规范以及数据模型,定义完模型后就可以开始去做数据生产,可能是离线的数据生产,也可能是实时的数据生产,当用户把这些代码开发完成后,再把代码发布到生产环境,进行定时的生产调度以产出数据,那么数据准时产出后,每天这些数据就可能用于BI表呈现,或者是通过API的形式去支撑整个企业应用的正常运转。
2、一般数据生产流程:专业&规范 从微观上看,一般的数据生产开发的流程大概是怎么样的?
(1)开发阶段 代码开发 单元测试 代码评审
(2)测试阶段 交付测试 数据测试 UAT测试
(3)发布阶段 发布申请&审批 发布执行 上线通知
(4)运维阶段 监控 日常运维 作为开发人员,他在接到业务方的需求后,就是根据实际场景去进行代码开发,开发完后他就需要进行自测,自我保证代码是能够产出业务方所需要的数据的,开发阶段后就是测试阶段,在阶段数据产品经理以及专门的测试人员就会参与进,对之前所开发的代码去进行交互测试数据测试以及uat的测试,这几个检查的会相对检查细一些,比如他会去检查表命名以及字段命名是否符合规范,以及数据的空值,重复值,无效值占比是否符合要求,同时还会检验他的业务的正确性,也就是所产出的数据对业务是否有用,代码的性能也有要求,不能写一段代码跑几个小时或者半天,这样肯定是不符合要求的。在测试阶段完成后,代码就准备上线了,这时需要一个第三方的人员,一般是对整个企业的数据体系,数据业务非常熟悉的人员对代码进行review,如果确认这段代码对现在业务没有影响,确实能够产出所需要的业务数据,那就可以对代码进行发布。到运维阶段,作为任务的责任人,最基本的责任它是要保证这段代码能够每天准时的运行成功的。如果出现变化或者出错等等问题,是需要第一时间能够查看日志找到原因解决问题的,这时也会需要运维平台帮助它去做任务的运维。
3、DataStudio 核心能力:丰富的数据开发能力 数据开发和任务调度是跟数据生产与开发有关的模块。现在 DataWorks 已经支持离线实施,交互式以及机器学习的多种多样的开发模式,同时也是 DataWorks 的核心能力。任务在开发好后,用户可以把任务发到生产调度系统,让 DataWorks 调度系统自动去调度运行。
4、DataStudio 核心能力:天然具有规范化的数据生产流程
DataWorks 本身也内化相对完善规范的开发流程,也就是 DataWorks 的标准模式空间,在这种模式的空间下,一个空间会对应两个计算引擎,那计算引擎有可能是 maxcompute yy 的,也有可能是emr或者其他类的引擎。作为数据开发的人员他只需要在开发环境进行代码开发,工作流配置以及冒烟测试,测试无误后执行提交,在提交发布到生产环境之前,需要有管理员或者运维角色对他的代码进行审核,如果审核开发人员的代码不会对系统稳定性造成影响,或者不会有故障的产生,同时也符合业务的要求。作为主管或者运维部署人员的角色就可以执行发布,将任务发布到市场环境调度运行。
5、离线开发核心流程
(1)Step 1 :业务流程规划 以业务视角归并管理所涉及任务、表、资源、函数,使得业务构成一目了然。(同一业务流程下,文件夹层级不建议超过4层)。
(2)Step 2-1 :工作流构建 在线开发代码 用户会创建SQL,任务进入后就可以开始编辑SQL,复制一段语法正确,但是没有进行格式化后的代码,点击格式化按钮后就会变成有缩进的形式,同时用户在编写SQL时也会有关键词联想以及的关键词高量的效果,帮助用户去更好的理解这段SQL。同时在右侧会有dng图帮助用户定位到SQL的关键词,如果当SQL非常长时,功能也是非常实用的。
(3)Step 2-2 :工作流构建 调度属性配置 当用户编写完SQL后,就需要对节点它的调度属性进行配置。用户应该关注的是当前节点的调度周期是每月调度一次还是每天调度一次,调度周期值跟 44Linux table 的分时日月周是一样的,用户可以对任意节点去设置它的运行周期,同时用户还能设置节点运行失败后重跑的机制。
(4)Step 2-3 :工作流构建 依赖关系配置 当用户把多个任务的调度水平都配置完成后,就应该配置每任务之间的依赖关系。DataWorks 有多种配置依赖的方法,目前展示的是最简单的一种,也就是连线的的方式。可以看到多个节点是分散的,是没有依赖关系的,这时用户只需要通过鼠标连线的方式,就能把依赖关系很简单的配置起来。DataWorks 还支持通过解析上下游产出数据源的方式配置依赖关系。配置完成后就把每个节点进行提交,因为提交后任务才能进入到开发环境的调度系统,才能进行冒烟测试。
(5)Step 3 :冒烟测试 在开发环境执行冒烟测试 需要用户逐个进入任务的开发界面,点击在开发环境进行冒烟测试,这时会让用户选择业务日期,在开发环境进行冒烟测试的日志,在页面上也是能够查看得见的,只要当前任务执行成功,它也会显示成功,如果失败也可以通过查看日志的方式查看具体是什么原因导致的失败。
(6)Step 4 :任务发布至生产环境 周期性生成实例自动调度 当每一个任务都在开发环境进行冒烟测试,运行成功后,就可以通知运维或者管理员同学进入右上方的任务发布页面,对任务进行 review 以及执行发布。页面会显示出开发人员所有提交过的任务,并且能够点击查看对比两次发布前后的代码的差异。如果这时管理员判断即将发布的代码对线上的环境没有影响,并且发布的代码也是符合业务要求的,就可以点击全部打包发布,编写的几个任务就会发布到生产环境。
(7)任务运维 可视化日常运维,智能诊断 在 DataWorks 的运维中心可以完成所有的日常运维的操作以及运行状态的诊断。可以看到在运维中心的首页运维大屏,用户能够看到每天运行系列的情况,比如成功多少任务,失败多少任务,有多少任务是变慢的,有多少任务是没有准时运行的,同时也能查看得到今天和昨天的任务的比较以及与历史平均的,那么用户通常会遇到的情况是某个任务变慢或者失败,要去哪里查看日志,要去哪里进行重跑,一般只要进入周期实例菜单就可以得到所有的信息。比如用户可以点击查看某个任务,那么它右侧的视图就能看到任务运行的整体的日志,并且进行运行的诊断。当前是展示如何去通过运行诊断排查错误任务的原因,点击运行诊断进入到当前任务的详细诊断页面,实际上运行诊断的功能是从依赖检查开始。首先检查任务的上游依赖的所有任务是否已经运行完成,如果都运行完成,再检查当前任务的定时时间是否已经到,再检查调度资源是否足够,是否拥塞,最后再查看任务执行出错的原因,那么在当前任务中,所有的上游都是已经运行完成的,定时时间也到,调度资源也申请到,点击调度资源,可以查看当时调度资源分配的详情,从使用区域图中可以看到,任务实际上是延续11分钟的时间调起,是因为当时有很多任务同时运行,抢占其他DataWorks调度资源,所以导致当前任务等11分钟的调度资源才调度起来,最终任务失败的原因,在最后一步中可以看得到,目前运行整顿已经覆盖大部分的任务报错的原因,并且能把它翻译成中文,告诉用户当前任务失败的原因是什么。这个任务失败的原因是sql语法导致的,一般这种错误原因不应该在生产环境发生,在测试阶段就应该发现并且把它规避掉。