实现开发生产等多套环境隔离

使用DataWorks进行大数据开发时,支持对开发、测试、生产等环境进行隔离,当您联合使用了其他阿里云产品时,也可根据环境隔离诉求进行对应业务的环境设置与隔离,本文以DataWorks联合EMR、OSS等产品为例,为您介绍如何实现开发生产等多套环境隔离。

背景信息

很多企业用户在大数据的研发流程中有创建并隔离多套环境的需求,如创建并完全隔离开发、测试、生产环境,即各环境的数据物理存储地址、任务运行集群、大数据作业脚本均隔离,并对操作人员有严格的权限管控,如仅运维团队可使用生产环境,开发人员只能使用开发环境等要求。

本文以使用DataWorks、EMR、OSS、DLF进行大数据开发,并实现开发、生产环境隔离为例,为您示例如何实现环境隔离。其中:

  • DataWorks用于管理大数据作业的开发、运维、调度。

  • 2个EMR集群分别用于开发和生产环境。

  • OSS用于存储实际数据。

  • DLF用于存储管理元数据。

DLF的环境隔离

  1. 在DLF中创建两个数据目录(catalog), 一个用于存储开发环境下的元数据(dev catalog),一个用于存储生产环境下的元数据(prod catalog),并设置目录路径为不同的OSS路径。

    操作详情请参见数据目录dlf

  2. 在相应的数据目录中创建数据库, 建议开发、生产的数据目录下的数据库名称相同,指向的OSS路径不同,方便后续的迁移工作。

    数据库

EMR集群的环境隔离

分别设置2个EMR集群中各个引擎的catalog信息,保证EMR开发环境的集群引擎使用上述创建的开发环境的数据目录(dev catalog),生产环境集群引擎使用的是生产环境的数据目录(prod catalog)。

以Hive引擎为例,用于开发环境的实例需修改hive引擎中dlf.catalog.id为开发环境的数据目录(dev catalog),核心配置页面如下。操作详情请参见管理配置项emr

重要
  • 以上为hive引擎的示例,2个EMR实例中,所有类型的引擎都需参考上述描述进行修改。

  • 引擎配置修改完成后,需要下发配置并重启组件,使修改的配置生效。

DataWorks的环境隔离

简单模式空间环境隔离

  1. 分别创建2个简单模式的DataWorks工作空间,一个用于开发环境,绑定开发环境的EMR集群,一个用于生产环境,绑定生产环境的EMR集群。操作详情请参见创建工作空间

  2. 在开发环境的工作空间中,使用DataStudio进行任务开发和调度配置,同时建表语句使用SQL命令完成。

    建表语句示例:

    create table if not exists db1.table1 ( id int, name String);
    说明

    由于数据库已经在DLF中声明了路径,此处不再声明路径。

  3. 使用跨项目克隆功能,将开发环境下的业务流程发布至生产环境的工作空间中。

    跨项目克隆选择需要克隆的业务流程,并设置计算引擎的映射、资源组等配置。操作详情请参见发布中心概述。完成后即可在生产环境的工作空间中看到对应的任务,您可根据生产环境的业务需求进行修改、验收、发布。

标准模式空间环境隔离

标准模式空间下,可以通过使用工作空间参数功能实现开发环境和生产环境分别访问不同的EMR库。

  1. 空间参数赋值不同的开发生产库名,在代码变量中赋值工作空间参数时可实现开发生产访问不同的EMR库。

    1. 定义工作空间参数。

      1. 进入数据开发页面。登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据建模与开发 > 运维中心,在下拉框中选择对应工作空间后单击进入运维中心

      2. 单击左侧导航栏中的调度设置,单击页面中的工作空间参数,单击右侧的新建工作空间参数按钮,在新建工作空间参数对话框中,输入以下参数信息:

        参数名称

        示例值

        参数名称

        emr_env,可自定义。

        责任人

        下拉选择对应用户。

        适用工作空间

        选择所选工作空间名称。

        参数类型

        选择常量(明文)

        参数值(开发)

        emr_dev,emr开发环境库名。

        参数值(生产)

        emr_prod,emr生产环境库名。

        描述

        可自定义。

    2. 您需要使用代码变量赋值工作空间参数实现开发生产访问不同的EMR库,可以在DataStudio进行任务开发和调度配置时,单击任务右侧调度配置,在参数值位置配置工作空间参数名称。具体操作如下图所示:

      image

    3. 任务发布开发环境时,变量会自动赋值为开发集群中存在的数据库(emr_dev)。任务发布至生产环境时,变量会自动赋值为生产集群中存在的数据库(emr_prod)。