开发者学堂课程【一站式大数据开发治理平台 DataWorks 初级课程:DataWorks 迁移助手介绍及实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/763/detail/13363
DataWorks 迁移助手介绍及实践
内容介绍:
一、产品介绍
二、使用场景
三、实操演示
今天给大家介绍 DataWorks 迁移助手。迁移助手是 DataWorks 开发成果快速复制利器,通过迁移助手可以将 DataWorks 上的开发成果在不同的环境快速复制。今天主要从三个部分进行分享:第一部分,向大家讲解迁移助手的产品的类。第二部分:使用场景的介绍。第三部分:一个完整的实操演示。
一、产品介绍
迁移助手是 DataWorks 的一个全新模块,它的核心能力主要分为两个部分:任务上云、 DataWorks 迁移。可以看到左侧是一个开源调度引擎导出方案选择的界面,主要是用来帮助我们导出开源调度引擎上的任务。右侧是 DataWorks 迁移的页面,主要是一个自选导出对象的操作页。下面给大家介绍两大核心的能力。
1. 任务上云
任务上云,顾名思义,就是将本地自建的开源调度引擎上面的作业快速上云;主要支持的引擎为 Oozie 和 Azkaban 。目前能够迁移的节点的类型主要是: Sqoop 节点、 Shell 节点和一些 Hive 节点。并且能够做到将这些节点转化成为 DataWorks 上 MaxComputer 的任务或者是 EMR 的任务。比如说:有一个 Hive 作业,它导入到 DataWorks 上的时候,其实可以选择将该 Hive 作业转化为 ODPS 作业或者是转化为 EMR Hive 作业。这样,就可以根据 DataWorks 上计算引擎的选型,快速的匹配到作业类型。
2. DataWorks 迁移
DataWorks 迁移主要是将 DataWorks 上的开发成果进行迁移。迁移的同时支持跨租户、跨 Region 、跨云、跨版本等多种复杂场景。
它支持的迁移对象主要有:周期任务、手动任务、资源文件、 UDF 函数、 SQL 组件、临时查询、数据源、表元数据( DDL )。当八个对象可以全部导出的时候,我们的作业就能够在新的环境里快速运行起来,因为它依赖的一些组件基本都存在。
第二个核心点是迁移助手支持的导出方式,知道 DataWorks 具有备份恢复的功能,备份恢复功能的导出能力是比较简单的,主要是能够支持全量备份和增量备份。这时大家会遇到许多需要做自选备份的情况,通过备份恢复的能力就无法满足大家的需求;而迁移助手其实是感受到大家在整个迁移或者是备份恢复过程中的一些诉求。所以对迁移的操作做了全新的产品设计,从而诞生出来的一个模块。
在迁移过程中,还会遇到一些需要做的高级设置,比如:要能够支持设置一些导出的黑名单,用来保护敏感的任务;要能够支持用户设置一些资源组、依赖关系和工作空间的映射,来减少导入到新工作空间后的一些作业修改;并且会产出一份详细的迁移报告,让我们快速了解整个迁移过程中发生了什么,有哪些任务导出成功,有哪些任务导出失败,失败的原因是什么。
最后,我们迁移的过程中,还会兼容历史的版本(主要是指在专有云上),而公共云上大部分都会使用公共云的最新版本。
二、使用场景
迁移助手的使用场景主要有六个:任务上云、跨 Region 迁移、测试环境快速搭建、跨云发布、灾备、开发成果快速复制。下面会针对其中部分场景进行详细介绍。
1、任务上云
可以将 Oozie 和 Azkaban 开源调度引擎上的作业转换成为 MaxComputer 或者是 EMR 认可的节点。
2、跨 Region 迁移
举例:可以将上海 Region 的开发成果迁移到其他 Region 。收到过许多客户的需求,即最开始使用 DataWorks 的时候只有上海 Region 没有别的 Region ,但是服务器有北京 Region 、杭州 Region 。现在想要把大数据平台也迁移到和服务器相同的 Region 上,这时候该怎么办?上述的情景是想要把整个 DataWorks 从一个 Region 搬到另一个 Region ,这种情况下使用迁移助手也不能完全的满足该需求。因为整体的迁移涉及到的风险和细节点都非常的多,比如:整个 Region 的数据要不要迁移,整个 Region 上的任务怎么迁,整个 Region 上已经运行的任务实例怎么迁,还有一些已经配置好的,像已经添加好了白名单的数据源、已经添加好了的成员权限管控,这些该怎么迁?整个跨 Region 迁移的细节点非常多,如果说一定要走跨 Region 的整体搬迁,可以在搬迁前通过工单或者其他方式与我们联系,一起评估整体搬迁的风险;如果说只是想要把部分的业务迁移到其他的 Region ,不涉及到太多的复杂对象或整体的搬迁,那么可以尽情的使用迁移助手来做尝试。
3、跨云发布
可以理解为金融行业的一个通用需求,本质是因为银行、金融行业受监管要求,它的开发和生产环境必须隔离。因为开发市场必须做物理隔离,最终会有两套环境:一套开发环境,一套生产环境。日常的数据开发在开发环境进行,在开发环境向生产环境发布的过程中就需要迁移助手来完成。为什么说开发到生产的发布一定需要迁移助手来完成?这里有三个问题:
第一,开发和生产的物理地区隔离,导致系统间无法进行通信;
第二,整体的任务发布时间窗口非常小,无法手动创建任务;
第三,需要对发布的对象进行版本管理,所以也无法通过手动的方式进行创建任务、手动迁移等等。
给出的解决方案是开发人员通过迁移助手来导出待发布任务,由另外的人员将导出包导入至生产环境并留档,从而进行后续的版本管理。
4、开发成果快速复制
最核心的场景就是迁移助手能够将开发成果快速的进行复制:该功能主要是面向 DataWorks 的合作伙伴,即合作伙伴只需要开发一次代码就可以快速的把这些成果复制出来,然后快速的交付给客户。合作伙伴用迁移助手来完成开发成果快速复制也会存在一些问题,如果不使用迁移助手还会面临其他问题:
第一,客户的 DataWorks 版本不一致,不同版本之间会存在一些数据渐弱性的问题,所以需要一套工具来解决该问题,让任务代码能够快速的在不同的版本、不同的环境间进行复制。
第二,作为专业的数据开发厂商会同时面临很多的客户,这时侯研发中心会同时开发多套任务代码,要灵活的给客户做交付,就需要灵活的选择迁移对象,所以对迁移助手(迁移工具)的另一个要求就是:要能够支持灵活的选择迁移对象。上述内容是迁移助手的一些核心的产品能力以及核心的使用场景。
三、实操演示
下面,进入到实操演示的环节。第一,将我们开源调度引擎上面的作业导入至 DataWorks 上。打开 DataWorks 的操作界面,即 DataWorks 数据开发的界面,如下图:
当前的工作库下面是没有任何对象、作业的;包括手动作业都是没有的。在左侧边栏找到迁移助手模块,如下图:
点击,进入迁移助手,如下图。
进入迁移助手之后,可以看到页面上主要分为两部分:任务上云、 DataWorks 迁移。点击任务上云中的开源引擎导出,如下图:
可以看到迁移助手会提供开源引擎导出方案选择,根据我们的调动作业所在的引擎类型去查看它的导出方案。 Ooize 的导出方案,如下图:
Azkaban 的导出方案,如下图:
如果 Oozie 和 Azkaban 都不是自己使用的调入系统,那么可以尝试一下使用标准模板,先下载标准格式模板,然后根据模板内的格式要求去填补内容。标准模板如下图:
在有了 Ooize 作业之后,点击开源引擎导入,创建一个开源引擎的导入,具体操作如下图:
新建一个 Ooize 导入作业,点击上传文件进行选择:
文件上传以后,点击校验,校验成功之后,点击确认。
完成之后,可以看到一个编辑导入任务的页面,导入对象是处在周期任务的筛选项,它下面是没有任何作业的。如下图:
手动任务下面有作业,我们对其可以进行查看。
点击右侧的高级设置。
如果说工作空间同时绑了 ODPS 引擎和 EMR 引擎,这是就可以选择 Hive 类型节点转化成为什么类型, ODPS_SQL 还是 EMR 。现在由于只选择了一个引擎,没有 EMR 就不需要进行修改,保持默认即可。
点击开始导入。
开始导入的过程会有些漫长,因为会做一些预处理,之后才开始对作业进行导入操作。导入进度能够清晰地告诉我们当前的导入情况,如下图:
在导入进度中,点击返回导入列表,可以看到在导入任务列表中,有一个作业是导入的状态,并且能够随时查看导入进度。
目前,数据源、资源、周期任务导入成功,还有手动任务未导入成功,等待一会儿。给大家讲解一下 DataWorks 迁移的过程,主要是将 DataWorks 的一些开发成果进行一些备份恢复,分为两部分: DataWorks 导出、 DataWorks 导入。在整个导入进度完成以后,返回导入任务列表,点击查看导入报告。
导入报告的页面会显示本次导入了哪些作业,哪些对象,导入的结果是什么。可以直观的看到导入的周期任务、手动任务、资源、数据源各是多少。如下图:
导入成功了多少,点击导入成功就可在明细中查看具体内容。如下图:
导入设置的相关内容也可以看到,如下图:
通过导入报告,可以非常清楚的了解到导入的作业有哪些。我们还可以点击查看导入任务,如下图:
在数据开发中,查看本次的导入任务有哪些?找到刚刚的手动业务流程,找到手动任务,双击,打开手动业务流程。如下图:
可以看到,右侧就是导入的调动作业,已经生成好了依赖关系,每个都配置好了。到这里,开源调度引擎任务的作业就成功了。
下面,尝试做 DataWorks 的迁移。因为刚刚导入的作业不多,所以先选择 DataWorks 导入,点击新建导入任务,如下图:
导入有两种方式,一种是本地文件上传,一种是 OSS 文件。输入导入任务名称,点击上传文件,选择导入包,进行文件上传。如下图:
上传完成后,会进行自动校验,校验通过后,点击确认,开始导入。如下图:
在导入开源作业的时候,是需要做一个简单的节点关系的映射,换到 DataWorks 迁移中,需要做的映射关系就会更多。比如:工作空间引擎实例的映射,源空间是 GW_worksshop_demo ,目标空间是 yunxi_demo_0928 。如下图:
还有一些资源组的映射关系,即源的工作空间是什么,是否采用自定义资源组;目标段内,工作空间的自定义资源组类型或资源组是哪些?是否需要修改?另一个很重要的是依赖关系的映射,大家都知道依赖关系在 DataWorks 上是非常重要的一个东西;调度作业非常厉害就是因为能够配置各种各样复杂的依赖关系。如果说在源端节点的输出名称或者是代码中的数据表,其实都已经指定上了工作空间,若是沿用老的工作空间,那么在新的工作空间里(目标端)的作业可能就会运行失败,所以我们需要去进行一些不一样的替换;目前,迁移助手能够修改的范围是代码、输入名称、输出名称。基本上就可以将大部分使用工作空间的名称统一进行替换。
空跑属性的设置,即在导入以后,如果实际运行,就可以选择部分作业进行空跑。如下图:
最后,非常核心的能力是提交规则,即这个作业要不要提交?作业导入以后的责任人是谁?如果选择统一修改,会选择工作空间内的成员。如果选择不修改,就会默认去找任务的 owner ,在目标工作空间(新的工作空间)中是否存在;若不存在,仍会去修改作业导入人。
上述操作设置完成后,点击开始导入。如下图:
导入时会进行确认,即导入操作会使工作空间产生不可逆的修改,请确认是否开始导入?点击确认。如下图:
之后就是熟悉的进度条画面,可以查看整体的导入进度,如下图:
接下来,开始导出。进入导出任务列表,如下图:
在刚刚已经通过开源引擎导入的方式,即任务上云的方式,已经导入了一批作业,这时可以进行尝试。点击新建导出任务。会出现三种导出类型:全量导出、增量导出、自选导出。全量导出属于最省事的,整个过程中所有的东西全部导出,同时可以对一些名单任务做添加黑名单的操作。
导出时,支持的版本格式有三种:公共云、专有云、标准格式。现在选择自选导出,输入导出名称,公共云的版本格式,之后点击选择导出内容。
跳转至自选导出列表,到处对象是周期任务,导出环境是生产。这里想观察一下,开发环境是否有周期任务。结果如下图。
可以看到表中内容是刚刚已经完成的导入作业。我们想查看手动任务的导入作业是否完成,将到处对象选择为手动任务,导出环境是开发环境,表中内容就是刚刚导入的手动作业。得到结果如下图:
我们选择一些导出的对象,选择周期任务,导出环境是开发环境,勾选所有内容,之后点击添加到导出包。
接下来就可以查看导出包,明确导出包中的对象有哪些,刚刚选择的周期任务,就没有其他内容了。如下图:
点击开始导出。操作如下图:
之后又会进入一个导出进度的页面,进行等待,如下图:
返回导出任务列表,查看刚刚导入的作业的情况,点击查看导入报告,了解刚刚导入了哪些内容?操作如下图:
导入了六个周期任务,两个数据源,无手动任务,五个表 DDL 语句,一个资源,一个函数。具体内容如下图:
还可以看到导入设置的映射关系,如下图:
导入报告就不在研究,点击查看导入任务,看任务是否导入成功。进入数据开发,查看业务流程,点击 workshop 演示。右侧有六个作业任务。
因为刚刚导入作业的时候并没有提交作业,如果这些作业要在生产上运行的话,得有提交的操作。如下图:
点击业务流程里的批量提交,如下图:
点击提交,会出现下图的界面。
等到上图内容提交完成后,就可以在应用中心里看到这些作业,即他们正式的进入到了生产环境。还有一个任务发布的过程。如下图:
任务发布页面中,表中的前六项内容,是刚刚提交的六个节点。第七个函数,第八个资源也是刚刚导入的。勾选所有内容,点击添加到待发布或者点击发布选中项。
查看发布包列表,点击右侧查看,就可查看发布包详情,点击关闭。
在运维中心里查看刚刚发布的作业。如下图:
在周期任务中,可以看到刚刚发布的六个作业。
到这里,导入的工作基本上就完成了。再返回,查看刚刚的导出是否成功,点击查看导出报告,是否有界定导出失败。如下图:
在导出报告界面,可以看到六个周期任务都已导出成功,如下图:
以上就是迁移助手核心的产品能力演示。