DataWorks高级功能场景化案例分享
自2009年DataWorks立项,伴随着阿里巴巴集团登月计划、公共云和专有云的发布,直到2018年V2.0的发布,DataWorks已经走过了十年的历程。本文主要分享了DataWorks商业化增值版本中高级功能,分别介绍了DataWorks基础版,标准版,专业版和企业版中具备的特色功能和每个功能点所适应的场景,帮助用户选择适合的DataWorks版本,更好的解决所面临的问题。
一、DataWorks背景介绍
1.DataWorks的发展历史
自2009年DataWorks立项,伴随着阿里巴巴集团登月计划、公共云和专有云的发布,直到2018年V2.0的发布,DataWorks已经走过了十年的历程。整个过程经历了几个关键的节点,2009年到2013年期间,DataWorks具备调度Hadoop集群任务的能力。在此之后,由于数据量不断的增加,Hadoop集群已无法支撑阿里巴巴集团海量增长的数据,阿里开始自研MaxCompute+DataWorks。2013年之后,DataWorks开始支持Maxcompute任务的调度。自此,阿里巴巴集团基于Maxcompute+DataWorks,构建了整个阿里的数据中台。
2. DataWorks-一站式大数据研发+治理平台
作为阿里巴巴的一站式大数据的研发平台,DataWorks具备的基础能力可以分为两大部分,数据研发和数据治理。在2018年上半年之前,大部分用户使用DataWorks产品的目的是做数据研发工作,基于DataWorks的数据研发工作通常是将数据源通过数据集成传到Maxcompute,再通过离线计算Data Studio任务进行定时调度。从2018年下半年开始,发布的DataWorks V2.0将集团内部数据治理功能无缝部署到了公共云,使每位公共云用户都能够在DataWorks 基础版中具备较为完善的数据治理能力,包括数据血缘、数据质量监控、任务监控、数据审计,以及安全数据权限管控的功能。
为了让用户体验到更好的商业级服务,DataWorks在2019年6月份实行了商业化。DataWorks收费文档中展示了整个收费模型,该模型将DataWorks划分为两种类型的商品,分别是:资源服务类商品和功能特性类商品。功能特性类商品提供给用户的是DataWorks各模块的功能点,如:用户打开DataWorks界面便能看到数据开发-节点类型、运维中心-智能监控等功能,这些界面都是基于DataWorks的某个版本来呈现给用户的,如:DataWorks基础版/标准版/专业版/企业版等。如果在此版本之上,如用户使用到其中的某些特定功能点,则会按照按量付费的方式进行扣费。、
(注意:任何用户都必须开通DataWorks按量付费商品,开通后即可永久赠送DataWorks基础版。)
二、DataWorks高级功能场景化介绍
1. DataWorks基础版
DataWorks基础版具备较为实用的特性,可以帮助用户快速构建数据仓库。DataWorks基础版可以覆盖大数据研发的全生命周期,包括数据接入、数据开发、调动生产、可视化运维、数据质量监控,表权限管理,数据服务API构建,到数据最终呈现到某个应用的开发等全部模块。值得一提的是,在数据接入部分DataWorks新增了“批量上云”功能,如用户的数据存在多个MySQL数据库,每个数据库包含多个DB,每个DB都有n多张表。此时用户可以通过批量上云功能,上传EXCEL形式的数据,快速建立起多个数据同步任务进行数据的快速上云。目前批量上云方式支持ORACLE,MySQL以及SQL server。基础版目前也有数据质量监控功能,用户可以设置自定义的规则进行检查。
2. DataWorks标准版
针对基础版,DataWorks标准版在研发方面增加了较多复杂且专业化的节点类型,同时对实时Flink引擎也有了更好的可视化支持。DataWorks标准版更多的是面向大数据体系发展比较快的企业,企业在数据体系发展比较快时,数据质量问题、安全问题通常会逐步暴露,出现相关质量、安全隐患,因此在数据治理方面,DataWorks标准版提供了相应的能力帮助用户解决问题。
如下是DataWorks标准版场景化案例:
场景一、分支节点实现特定时间执行任务
比如,用户会提出诉求,既能否根据某个特殊的判断决定任务工作流的下游是否要跑某个任务。如下图,用户要判断今天是不是每个月最后一日。由于每个月的最后一天并不是固定的30号。
此时,如果通过DataWorks传统的简单场景的线性依赖,很难实现用户诉求。DataWorks标准版提供了几种负载类型的节点,包括循环、遍历、赋值、分支和归并节点,让用户自由组合节点,以便实现更复杂的场景。
上述场景如何通过复杂节点实现?如下图所示,案例中需要使用两种节点,赋值节点和分支节点。赋值节点中用户可以通过Python判断今天是不是这个月的最后一天,如果是,赋值节点负责将“1”作为一个传参传给下游,如果不是则传“0”。分支节点接收到上游传参“1”,则执行左边分支,如果接收到“0”,执行右边的分支。
场景二、SQL代码复用
随着用户SQL代码规模越来越大,某些代码段会成为一个公用的代码段。用户需要将这些代码做成公用代码供其他人复用。传统方法是复制代码,而传统的的做法存在较高的风险。复制代码一方面效率较低,另外很容易对代码进行剪切,原代码会被改动。
DataWorks标准版提供了SQL组件功能,允许用户定义一个公用的SQL代码块,并且在其中设置自己需要的变量。其他人需要这个SQL代码块,就将其作为一个节点投入到一个业务流程,同时对设置的参数进行赋值,实现SQL代码的复用。
场景三.实时场景
某些企业需要构建实时的数据仓库,而实际上,往往需要技术非常娴熟的一批团队才能够搭建起整个流计算的系统。Flink的整个流程包括,用户在本地进行流任务的开发调参,开发结束后上传到Flink集群,再通过命令行运行。同时,运维过程也非常麻烦,如果出现超时或其它问题,Flink需要在多个地方检查日志,排查难度非常高。
DataWorks标准版提供了DAG开发以及SQL/DAG互转功能。用户可以对每个处理的数据和处理动作都拖入一个节点,将节点串联成一个工作流,依次对数据进行处理。如下图,点开每个节点的结构,如第一个datahub是个数据源,输入时会有一个字段,到第二个固定链被切分,切分为多个字段。用户可以通过可视化的方式在线进行配置字段。在配置完整个流程之后,点击右上角切换SQL模式,将其转化为Flink SQL。DataWorks标准版除了支持图形化的方式配置Flink流计算的处理流程,也支持用户使用原生的SQL进行任务的编写。
另外,DataWorks专业版中具备本地调试功能,在每个节点用户可以点击采样看到采样的时间点采样数据。如果不符合预期,用户可以及时做出调整。传统Flink不具备此功能,只能等到所有任务都执行结束,才可以查看结果数据是否符合预期。用户在还没有将整个任务上线时,本地调试功能便能够检查数据的生产是否符合预期。在快速构建实时流计算体系时,DataWorks大大降低了用户使用实时流计算引擎的门槛。
场景四、任务监控场景
随着用户的工作量越来越庞大和越来越复杂,人肉维护每个任务监控变得非常痛苦。下图中展示的密密麻麻的节点,是阿里集团内在运营中心展开的DAG截图。传统监控配置手段对每个任务之间配置的超时进行报错,但当工作流的体量非常大时,传统的配置手段不是很现实。由于每个任务的数据体量不固定,导致任务时间增长,用户无法对每个任务的报警阈值做调整。这时需要一个既快捷又智能的方式,用户只需配置一次,在此之后合理监控,对整个工作流实现整体监控的功能。
DataWorks标准版的智能监控功能,允许用户仅对产出数据的最后一个节点配置一个极限时间,之后DataWorks智能监控系统在后端针对往常的每个任务的运行时间以及SQL语义进行分析,规划出关键路径,分析每一个节点的最晚开始和结束时间。一旦上游的某一个中间任务出现变慢或者出错的情况,智能监控系统中报警的机制会通过邮件、短信或者钉钉推送给用户。用户在接收到中间任务出现的事件时就可以快速响应,快速处理任务所出现的问题。如果问题能够得到及时解决,最终产出的任务就能够保证在用户定好的时间点产出。既对整个工作流设置基线,只要保证基线不破线,则智能监控功能可以保证数据准时产出。
场景五、寻找脏数据的源头
随着用户的数据量飞速增长,数据质量问题也会凸显。DataWorks标准版提供了让用户自己配置,自定义规则或者预设模板来监控数据质量的功能。如下图,一张用户消费表,以往每天用户花费是100多万,忽然有一天统计到的数据是2000,出现了不符合预期的情况。
DataWorks标准版中数据血缘功能能够帮用户很好的解决数据质量的问题。数据血缘功能可以为用户提供数据地图,能够识别每一张表的上游表和下游表,每一个字段的上游字段和下游字段,既以字段的形式呈现数据的历史。数据地图也有其它的用处,用户只要在一个阿里云主账号下面的同一个region,所有被加到当前项目的用户都可以在数据地图中搜索表,也可以在每张表的详细信息中看得到当天这张表的产出信息。数据地图对于日常表的使用也是必不可少的一个功能,可以查看字段说明、每日分区产出等信息。
场景六、数据审计
在保证数据准时产出、产出准确之后,如何保证数据不丢失?为此企业管理者通常会推动企业构建数据审计体系。DataWorks数据保护伞模块帮助用户对数据敏感级别进行分级和分类,以可视化(图形化)方式展示敏感数据,并且审计内部人员对敏感数据的访问行为,同时保证敏感数据可用不可见(既数据脱敏)。DataWorks标准版提供了以上四个功能,帮助用户落地最基本的数据审计的能力。
首先,DataWorks标准版提供了一个能够让用户自己定义字段、进行字段扫描的能力,对字段的敏感级别进行分类。如下图。用户可以在页面中创建几个分级,包括公开、内部、敏感和机密。然后设定数据类型,只要扫描到表中有payment字段,就将其定位为金额字段。设定的规则自第二天便开始生效,从零点开始进行扫描,扫描结束后展示整个项目中关于金额类的字段。
敏感数据访问行为审计功能将访问的行为记录下来,帮助管理者发现访问敏感字段的用户的行为,必要时管理者与相关人员进行一定的沟通,建立内部沟通的机制。数据脱敏目前有三种脱敏方式,包括HASH,假名和掩盖脱敏。
DataWorks标准版目前已经覆盖了大部分数据研发和基本的数据治理的功能。对于数据业务发展非常快,并且对数据治理有一定要求的企业,在初期可以选择DataWorks标准版来满足自己的诉求。
3. DataWorks专业版
DataWorks专业版提供可拓展数据服务的API,能够提供更灵活、更高可用的服务能力。同时在数据治理方面,DataWorks专业版的安全能力也有了一定的加强。
场景一、API对接报表系统
第一个场景,企业有不同数据结构的报表系统,需要以可视化方式展示数据。如一家银行需要对公司年度放贷的同比增长近做柱状图统计,此时银行正好有一套可视化的系统,其中有一个柱状图的组件,组件要求返回接收JSON格式的对象包数组数据结构即可正常显示。这时可以使用数据服务中的过滤器和函数功能对API返回的数据进行二次加工,灵活的应对各种的数据结构的要求。用户在MaxCompute中存了一张某企业的贷款信息表。传统的方式是构建好一个API,API中传入最右边的字段日期便可以返回其它几个字段。共计每条数据要返回七个字段,其中x显示公司信息,y显示贷款金额。下图右边将firm_name,firm_account,up_over_last_year三个字段组合起来放到x中,再将loan_amount字段结果放到y中。此时API已经构建好,但如果按照传统格式构建API并不划算。通过数据服务的过滤器和函数功能,用户使用Python3直接编写一个函数对数据和返回格式进行处理,将三个字段拼到一起,最终促成一个可视化的模板所要求的数据结构展示数据。
场景二、实时故障排查
在传统Flink场景下,运维工作难度较高,尤其是排查问题。如排查超时问题,常规的排查链路需要检查Checkpoint中某个算子是否出现了问题,若没有问题,再去查看JobManager的延时信息,再检查是否TaskManager对机器有负载过高,是否存在网络问题,异或存在数据倾斜问题。排查工作依赖于排查员个人经验,排查员个人经验和对Flink技术架构的理解决定了排查问题的准确性。
如下图所示,DataWorks的智能运维功能对数据源、数据产出、延迟、脏数据、Watermark、Checkpoint、failover提供了可视化检查,发现任何的错误都可以及时抛给用户,帮助用户定位错误。
场景三、非通用脱敏数据审计
DataWorks专业版在数据安全方面有了本质的提升。企业中不常见的敏感数据,需要纳入敏感数据的行列进行审计。这时需要有个功能是能够让用户通过选择某一类敏感数据的类型匹配字段,自定义的扫描字段。如下图,Bankcard id是银行卡号字段,通过DataWorks标准版功能就能够识别到此字段,并列为敏感字段。但下表中Product description 字段是用户购买的商品,其中某些记录值是敏感的,某些则不是,这时无需将整个字段都列为敏感信息。DataWorks专业版通过自定义内容扫描的方式来正则匹配,用户也可以选择自定义,点击内容扫描,只要是满足标准的正则的规则都可以进行匹配。这满足了在特定场景下敏感数据识别的诉求。
场景四、审计敏感数据访问行为
管理者不仅要审计每个人员对敏感数据的访问行为,还需要审查具备某个表权限的人员的风险行为,检查是否在非预期的时间使用了敏感数据。DataWorks专业版可以帮管理者识别高危访问行为,在页面上呈现出访问的SQL,访问时间和访问的敏感数据。若不符合预期,管理员需要其进行内部审核。
4.DataWorks企业版
DataWorks企业版增加了数据服务API编排能力。数据中台解决的问题是“存”、“通”、“用”问题。既需要将数据规范进行集中存储,使各系统间的数据统一流通,进行统一规划加工,同时将最终数据供业务方使用。而使用数据的业务方需求各式各样、千奇百怪,如数据中台可以快速慢速业务方诉求,则该数据体系在企业内就会赢得更多信任,具有越来越重要的企业战略地位;如不能及时满足用户的需求或不符合预期,则数据体系会越来越被边缘化。如何满足业务方纷繁复杂,各种各样的需求?DataWorks企业版数据服务目前提供了服务编排的能力,可以满足各种比较复杂的场景。
场景一、应对临时需求
某些临时性需求,如:审计人员会随机不定时地抽取各个数据源进行对比;或者风控系统要从多张表中取得相互依赖的数据,最终取得最下游的数据进行决策,都是较为复杂的业务诉求。
如下图所示,审计人员要将几张表join之后进行对比,或从多张表获得相互依赖的数据,找出最下游的数据进行决策。每一个表select的结果,都是下一张表where后面的条件。从数据开发角度较为常规的方法是将数据拉到数据仓库中,对表进行join后产出,最终得到结果进行对比。但这非常费时费力,同时会耗费计算存储资源,并且任务的维护性价比不是很高。
DataWorks企业版提供的数据服务编排能力允许用户构建多个API,将API构建成复杂逻辑的复合服务的功能。用户只需传入一个参数,下游API便可以根据每个上游API的产出作为输入,最终产出结果。如下图示例,在数据库里面创建一个编排的流程,拖入四个API,每个API都会抽一张表的一个字段,抽到的结果传入下一个API作为入参。API接到入参进行一系列的计算之后,将结果作为出参传给下游作为入参。经过一系列流程,就可以实现整个逻辑,用户不需要将所有数据都导到数据仓库里进行统一加工。数据服务支持多种数据源,包括MySQL,Oracle或者其它引擎。
在数据服务里也可以构建如下图所示的工作流。下图左边是join的API,API将两张表join后返回两个字段,最终形成字段表。最后拖入Python对两个API返回的结果进行对比,对比出来输出结果。如此便满足风控系统的审计人员不定时抽取多张表复查数据对比的诉求。
场景二、安全能力升级
DataWorks企业版在数据治理方面有了安全能力的升级,提供了场景PII敏感数据的识别模型。用户只需设置一个字段类型,DataWorks企业版就可以帮用户去识别某些敏感字段。DataWorks企业版中已经预设了部分敏感字段的算法,包括邮箱、座机、IP等。DataWorks企业版有一个特点,既进行安全知识的输出,如用户打开这个功能开关,便可以实现对同一天多次使用高相似度的SQL进行查询,帮助用户一键使用。DataWorks企业版目前提供个性化需求,用户可自建样本库,定义敏感数据,在内容扫描模块中维护的自建样本库。
场景三、定制化开发
部分用户的诉求是对DataWorks界面进行企业的定制化开发,DataWorks企业版通过APPStudio模块中高级API,进行界面的二次开发。目前,DataWorks企业版为用户提供了MaxCompute数据表类API,用户可以通过DataWorks企业版中的AppStudio模块来进行调用,并构建如下图所示的数据资产页面。
三、购买建议
DataWorks基础版:一般适用于构建数据仓库的需求非常紧迫,并且人员有缺口的情况。因为DataWorks基础版提供了可视化数据批量上云的能力,同时数据开发页面也支持可视化,包括SQL编写,工作流构建,依赖关系构建和任务运维。
DataWorks标准版:适用于数据体系发展比较快的企业。当企业数据量增加,任务的体量成规模的增加,安全治理的问题凸显。DataWorks标准版能够满足用户基本的数据治理的能力以及一些高级的数据开发能力。
DataWorks专业版:适用于需要构建相对成熟的数据服务体系的去企业。如果安全要求较高,DataWorks专业版提供的风险识别能力是非常必要的。
DataWorks企业版:当用户认为当前的数据体系提供服务的时候不是特别灵活,可以尝试使用DataWorks企业版数据编排服务,以满足整个数据中台对于业务方的各种各样的诉求。DataWorks企业版也会赋予用户越来越多数据安全和数据审计方面的能力。同时二次定制的数据开发的能力也会越来越完善。