一、阿里DataWorks与Dataphin的区别比对
1、Dataworks概述
Dataworks,在阿里集团内部为大家所熟知的部分是D2,DataWorks(数据工场)具备全栈数据研发能力(数据集成与开发、 生产运维调度、离线与实时分析、数据质量治理与资产管理、安全防护、数据共享与服务、机器学习、数据应用搭建)的大数据平台;
2、Dataphin概述
Dataphin,通过输出阿里数据中台实战沉淀的大数据建设体系OneData+OneID +OneService(产品+技术+方法论),一站式提供集数据引入、规范定义、数据建模、数据研发、数据萃取的全链路智能数据构建及管理服务。
3、DataWorks与Dataphin两者比对
区别1:一句话概括
一句话总结: DataWorks具备全栈数据研发能力和机器学习开发能力的大数据平台,这是dataworks的优势,劣势就是不具备数据中台(数据仓库)建设方法论的指导; Dataphin具备完善的“OneData+OneID +OneService(产品+技术+方法论)” 数据中台(数据仓库)建设方法论构建体系,这是dataphih的最大优势,劣势就是不具备很强的全栈数据研发能力,暂时也不具备机器学习开发能力。
区别2:开发理念
1、Dataworks 定位为大数据开发平台,ETL、数据仓库建设等对开发者不做任何限制。开发者可以利用dataworks做任意想做的工作,数据中台(数据仓库)构建的方法论也不做任何限制。开发者可以利用dataworks,既可以按照维度建模理论构建数据中台(数据仓库)、也可以按照范氏建模理论构建数据中台(数据仓库)、也可以按照E/R理论构建数据中台(数据仓库),灵活性是dataworks的优势之一,当然也是劣势之一。因为缺乏数据中台(数据仓库)建设方法论的支持,dataworks对于缺乏数据中台建设方法论经验的开发者(或者企业)不够简单易用;
2、Dataphin 定位于输出阿里巴巴数据中台方法论,开发者严格按照基于阿里多年零售经验的维度建模理论构建数据中台(数据仓库)。“设计即开发”,这是dataphin坚持的核心理念,使用dataphin的时候,开发者需要严格定义业务板块、数据域、业务过程、维度、原子指标、派生指标,然后“傻瓜式”地构建数据中台(数据仓库)。开发者可能都不用写任何代码(甚至连sql都可能不用写),只要按照上述维度建模方法论完成所有设计,即可构建数据中台(数据仓库)。
区别3:实时计算能力
不论是dataworks还是dataphin,均定位于离线批量开发能力。对于实时计算能力的支持,dataworks比dataphin稍微更强一些。利用dataworks集成的datahub+flink等工具能力,能够实现一些简单应用场景的实时计算能力; dataphin也在规划实时计算能力,预计再过几个月,dataphin最新版本也能实现一些简单场景的实时计算能力。
区别4:功能对比
dataphin有完整的数据模型设计,dataworks没有。
dataphin有体系化的数据指标管理,dataworks没有。
dataphin有数据萃取,核心实体的标签构建与管理,dataworks没有。
dataphin有基于逻辑模型的语义的OneService能力,dataworks没有。
dataphin有灵活自助的数据资产治理能力,dataworks没有。
dataworks有SQL编辑器,dataphin有。
dataworks有图形化的调度平台,dataphin有。
dataworks有数据地图,dataphin有。
dataworks有数据质量管理,dataphin有。
4、开发选择建议
1、如果开发者(或者企业)希望傻瓜式的构建数据中台(数据仓库),而且是借鉴阿里基于零售业务积累的“OneData+OneID +OneService”方法论构建维度建模体系的数据中台,那么dataphin是不错的选择;
2、如果开发者(或者企业)希望购买一套全栈数据研发能力的大数据平台,涵盖完善的数据集成与开发、生产运维调度、离线与实时分析、数据质量治理与资产管理、安全防护、数据共享与服务、机器学习、数据微服务应用搭建等能力。而且数据中台(数据仓库)不限制于维度建体系,那么dataworks是不错的选择。
二、阿里DataWorks平台应用
1、总体应用框架
(1)、应用流程图
(2)、涉及模块
数据集成模块、数据开发模块、发布管理模块、运维中心模块
数据处理
包括:数据输入、数据开发、数据输出(数据集成+数据开发模块);代码发布(发布管理模块);生产调度、生产运维(运维中心模块)
(3)、数据输入
就是数据的收集和数据存储,是数据开发的基础,首先要将不同业务系统的数据,分析要用到的数据同步到MaxCompute平台上来,这样才能利用MaxCompute海里数据存储和处理能力对数据处理加工和分析。、
(4)、数据开发
是数据的相关处理、清洗、加工、数据分析、统计、数据发掘等等。
(5)、 数据输出
就是数据应用。就是加工好的数据通过数据提取、数据展现、数据分享等多种形式发挥价值作用
(6)、代码发布
数据处理的程序代码、自定义函数、涉及的数据表、调度配置等需要从开发环境发布部署到线上环境
(7)、生产调度
数据分析过程通过调度系统、运维中心调度运行。
用阿里云数据平台Dataworks进行数据分析的几个必要步骤:服务开通、数据输入、数据开发、任务运维(详情可参考阿里开发手册)。
2、服务开通
(1)、购买
用阿里云账号登录阿里云平台、
购买
MaxCompute资源、创建工作空间、为了安全建议使用子账号来进行操作(因此需要创建子账号),为子账号添加权限,添加到项目中来。
(2)、创建工作空间
通过
MaxCompute控制台创建工作空间
,点击创建项目,进入创建工作空间的操作界面,输入基本信息:工作空间名称、显示名称、选配模式。然后在点击创建项目,然后进入MaxCompute配置页面。 配置MaxCompute项目的配置信息,涉及到:名称、付费模式、MaxCompute的数据类型(当前包括1.0数据类型和2.0数据类型,和Hive兼容类型,根据自己的需要选配),然后单击确认创建即可完成MaxCompute的创建。
基于
DataWorks控制台 创建DataWorks工作空间
,DataWorks的工作空间就是MaxCompute的项目的概念,工作空间是DataWorks管理工作任务、成员、分配角色和权限的基本单元。前提是开通阿里云账号,使用主账号登录DataWorks控制台,在概览页面的快速入口进入创建项目空间的操作界面。
选择计算引擎
:新建项目一般选择MaxCompute,选择DataWorks的服务,如果数据集成的需求则需要开通数据集成来实现数据同步;数据开发、数据运维、数据管理的功能默认是开通的。输入工作空间的名称,设置高级配置是否启用调度功能,是否能够下载select的结果,以及其它的相关配置信息,点击确认即可创建工作空间。简单模式:一个DataWorks空间对应一个MaxCompute项目,无法设置开发和生产环境,只能进行简单的开发,存在着安全风险。标准模式:一个DataWorks空间对应两个MaxCompute项目,可以设置开发和生产两种环境。提升了代码开发的规范,并能够对表的权限进行严格的控制,禁止随意操作生产环境的表,保证生产表的数据安全。所有代码仅支持在开发环境就行编辑,无法修改生产环境的代码。提交任务以后任务会进入开发环境调度系统,此时实际调度仅仅是测试使用,如果需要自动调度运行任务的首先要发布任务至生产环境,发布任务前需要项目管理人员或运维角色人员进行审批通过才能发布成功。开发的代码要到生产系统需要提交、发布、审批三个阶段。
(3)、 添加项目成员
创建新用户,将用户添加到项目空间去,并选配对应的角色权限(项目管理员、开发、运维、部署、访客、安全管理员)工作空间的创建者默认空间管理员,创建的RAM用户,赋完权限后就可以使用操作项目空间了
3、数据输入
数据输入是数据处理的第一步,简单讲就是数据同步:将分析所需要的数据导入大数据平台。隶属数据集成模块,可以根据不同情况采用不同方式将数据导入到MaxCompute平台。
(1)、数据集成
1)数据集成是稳定高效、弹性伸缩的数据同步平台。
2)致力于提供复制的网络环境下、丰富的异构数据源之间告诉稳定的数据移动及同步能力
数据集成的限制:
1)支持且仅支持构化、半结构化、无结构化数据同步,需要注意的是无结构化的数据如txt文件,要求同步前必须将数据抽象为结构化数据,也就是说数据集成只能传输抽象成逻辑二维表的数据同步,不支持同步完全非结构化的数据
4)支持单地域内及部分跨地域的相互同步、交换
5)完成数据同步(传输),本身不提供数据流的消费方式。
数据集成主要用于离线批量数据同步
数据集成数据传输通道(channel)通过定义数据来源和去向的数据源和数据集提供一套抽象化数据抽取插件Reader 、数据写入插件Writer,基于此框架设计一套简化版的中间数据传输格式。从而实现任何结构化数据源之间的数据传输。
目前数据集成也支持实时同步。
(2)、数据集成的配置
数据集成配置支持向导模式和脚本模式支持数据的开发。
通过配置数据的来源和去向可以完成外部数据同步都MaxCompute,或MaxCompute同步到外部数据、也可以外部数据之间的同步。
数据的同步任务属于某一个具体的业务流程,也就是数据集成是某个业务流程中的一个数据处理节点。
同步任务的简单步骤
分为四个步骤:配置数据源、创建同步任务、运行同步任务、查看结果
(3)、配置数据源(新增数据源)
注意:在开发过程中,需由项目管理员在【项目管理->数据源配置】来新增数据源供开发使用
(4)、创建同步任务
可以新建一个业务流程,也可以在已有的业务流程下的数据集成节点创建同步任务
字段映射:根据两个表的字段名称进行映射,或者根据两个表同行进行映射,注意数据类型的匹配,也可以手动编辑进行映射。
通道控制:
任务通道最大并发数:从源并行读取并行写入数据存储段的最大线程数。
同步速率:可以选择不限流,也可以设置同步速率,设置同步速率可以保护读取端数据库,避免抽取速度过大给源库造成太大压力。结合源库的配置合理配置同步速率。
(5)、运行同步任务
四种运行方式:直接运行、调度运行、补数运行和测试节点运行
(6)、查看同步任务结果
(7)、使用MaxCompute客户端方式同步数据
通过tunnel客户端的命令上传、下载数据
需要注意
1)支持文件或一级目录上传
2)每次上传只支持数据上传至一个表或表的分区
3)上传数据给有分区的表时候一定要指定分区,分级分区一定要指定末级分区
4)只支持单个文件的下载
5)下载对分区的之前规则和上传是一致的
DataWorks自身支持上传本地文本文件
DataWorks支持上传本地的文本文件至工作空间的表中
数据开发界面有上传按钮,支持.cvs .txt .log类型文件
4、数据开发
数据开发就是数据同步到MaxCompute后,在DataWorks开发业务流程,实现数据加工处理逻辑。测试后,将开发的流程代码打包,教友部署/运维人员发布。
(1)、总体开发过程
整个开发过程涉及到数据的开发、代码的发布。DataWorks的应用到数据开发模块和发布管理模块
数据总体的开发过程
数据开发模式采用三级结构:项目>解决方案>业务流程。按照业务类型将相关的不同节点任务组织在一起。
(2)、建表
(3)、数据开发流程
- 选择或新建业务流程
- 新建或选择已有的ODPS SQL节点
- 双击打开ODPS SQL节点,编写符合语法的SQL代码
- 在当前界面测试运行、检查语法、错误逻辑、输出结果
- 如果需要调度执行,还需要后面的步骤:
- 配置节点的调度信息、依赖关系
- 保存提交节点任务
- 发布到生产交由调度系统在生产环境执行SQL任务。
(4)、数据开发工具MaxCompute SQL
MaxCompute SQL的数据类型
基础类型:
1.0版 (bigint、string、double、decimal、datetime、boolean)
2.0版 新增 (int、smllint、varchar、float等)
复杂数据类型:array、map、struct
可以使用Hive兼容的版本,设置 set odps.sql.hive.compatible=true
[1]、MaxCompute SQL 快速建表CTAS(create as)
[2]、MaxCompute SQL 分区操作 Partition
[3]、MaxCompute SQL表的声明周期
MaxCompute SQL的多路输出
就是将一张表中数据插入到多张表中
[4]、MaxCompute SQL的Map Join操作
数据开发工具-定义函数UDF
除了使用内置函数外,用户可以通过创建自定义函数来满足不同的计算需求。
[5]、用户自定义函数UDF
UDF分类
- UDF
- UDTF
- UDAF(聚合函数)
UDF的开发流程
5、数据开发工具MapReduce
6、数据开发工具Graph
7、数据开发工具选择原则
8、任务运维
任务运维分两类:生产调度、生产运维
1、运维中心
运维中心包括:运维大屏、实时任务运维、周期任务运维、手动任务运维、智能监控和智能诊断
2、智能监控