项目管理

「项目」组成了离线开发的基本单元,一个项目是一组资源的集合,例如为了统计某个APP的活跃用户情况,需要多位开发人员根据业务需求创建不同的离线任务,那么这组用户、由这组用户创建的任务等等资源,可以理解为一个"`项目`"。

每个项目之间是彼此独立的,不同项目间的数据是隔离的

一个项目内包含的内容包括:

  1. 一个项目对接到底层引擎的一个Schema

  2. 一组用户

  3. 一组任务/脚本,及其配置

  4. 这些任务相关的任务实例、告警配置等信息

项目与Database/Schema的关系

不同数据库的Database和Schema有明显的概念区分,这里以Hive的Database做举例,对于LibrA或其他引擎,一个项目对接的是一个Database下的Schema,读者需按情况区分。

离线开发已支持对接到Hive、Impala、LibrA等不同类型的引擎,用户在新建项目时,需指定所连接的底层引擎的Schema,一个项目会连接一个Schema,且创建之后不可变更。从这个角度上,可以理解为"一个项目就是一个Schema"。

这种映射模式与数据开发过程中的操作过程是类似的,都是从Schema->表的视角,在后续的运维环节与这里的项目概念相一致,一次维护一个Schema中的表的数据。

支持的计算引擎

计算引擎 元数据获取 存储过程 UDF注册 数据管理 数据权限

Spark

SparkThriftServer

由离线开发控制

Hive

由离线开发控制

Impala

由离线开发控制

LibrA(GaussDB)

JDBC

数据库控制

Oracle

JDBC

数据库控制

TiDB

JDBC

数据库控制

Greenplum

JDBC

数据库控制

项目总览

有2种查看项目的方式:

  • 用户登录成功后停留的页面,可查看其参与的各个项目,同时可进入任意一个项目操作。

  • 在任意页面,点击数栈页面左上角的LOGO,页面跳转至项目总览页面,可以浏览当前用户管理、参与的所有项目。

创建项目

创建项目有2种方式,第一是创建一个新的Schema,另一种是对接到已存在的Schema上,点击「项目列表」页面,点击「创建项目」按钮,进入创建项目页面

项目基本信息

  1. 项目唯一标识:20个字符以内,且只能由字母和数字组成,相当于Schema的名称

  2. 显示名称:在项目选择等页面的显示名称,可填写中文、英文等字符

  3. 项目描述:不超过200字符,字符类型不限制

高级配置

  1. 启动周期调度:开启后,本项目每天会定期生成周期实例,默认开启;

  2. 下载SELECT结果:开启后,用户可在数据开发模块中,运行临时的SQL查询时,可下载查询结果;

计算引擎配置
离线开发可支持哪些计算引擎,可参考离线开发支持的计算引擎

  1. Spark Thrift Server:离线开发对接Spark Thrift Server,通过Spark Thrift Server的jdbc来获取元数据,并使用Hive Metastore存储元数据。

  2. HUAWEI LibrA、Oracle、TiDB、Greenplum:这几种引擎比较类似,均通过jdbc直接获取元数据信息;

  3. 创建Schema:根据用户填写的项目标识,创建一个新的Schema;

  4. 对接已有Schema:选择某个现存的Schema,本项目直接对接此Schema,可将已有表的元数据导入本平台进行管理,原系统内的数据本身不会移动或改变,在导入进行过程中,请勿执行表结构变更操作。

项目的初始化
创建项目后,系统会进行项目配置的初始化工作,可能在项目概览项目列表中看到这个状态。初始化是一种过渡状态,通常较为短暂。根据选择创建Schema或对接Schema的不同,初始化阶段的主要工作略有差异:

  1. 创建Schema

    1. 在数据库中,创建用户指定的Schema;

    2. 初始化数据(初始化demo任务、数据源、相关目录、系统函数、内置角色等)

  2. 对接已有Schema

    1. 连接用户指定的Schema;

    2. 读取Schema内的全部表信息,包括表名、表名comment、字段、字段comment等信息

    3. 初始化数据(初始化demo任务、数据源、相关目录、系统函数、内置角色等)

2种初始化场景中,对接已有Schema可能消耗的时间更长,其时间与Schema内已有的表数量高度相关。如果某项目长期处于"`初始化`"状态,可能在进行元数据同步,若明显超出合理范围,请联系技术支持解决,或需要查看后台运行日志。

数据源的初始化
在创建项目时,系统会根据本项目对接的引擎,自动在「数据源」菜单中创建一个默认数据源,方便用户进行初始化阶段的数据同步。系统默认创建的数据源,在数据源名称后会有image.png的标识

  • 项目的状态

当用户在创建项目时,由于初始化工作比较复杂,项目可能会进入不同的状态。

1575707675070 d22e7bdc 26d4 463b b319 c00704ddbf46

如上图所示,项目可能会存在多种状态:

  1. 初始化:如果某项目长期处于"初始化"状态,可能后台在进行元数据同步。

  2. 正常:项目初始化成功后,会进入正常状态。

  3. 失败:项目初始化失败,会进入失败状态,只有失败状态的项目才能被删除,由于涉及数据删除操作,在本版本中不支持删除项目。

租户管理员才可以创建项目、删除项目,其他角色没有创建项目的权限

项目管理

项目角色

每个项目内置6种角色,其功能权限如下表所示:

角色名称 功能权限描述

租户所有者

本项目内的全部权限,具有本租户内的最高权限

项目所有者

项目空间的创建者,拥有项目空间内的最高权限,可对该项目空间的基本属性、数据源、当前项目空间的全部资源和项目成员等进行管理,并为项目成员赋予项目管理员、开发、运维、访客角色。

项目管理员

项目空间的管理者,可对该项目空间的基本属性、数据源、当前项目空间的全部资源和项目成员等进行管理,并为项目成员赋予项目管理员、开发、运维、访客角色。项目管理员不能对项目所有者操作。

数据开发

能够创建任务、脚本、资源等,新建/删除表,但不能执行发布操作,不能管理数据源。

运维

由项目管理员分配运维权限;拥有发布任务、运维任务的操作权限,没有数据开发的操作权限。

访客

只具备查看权限,没有权限进行编辑任务、运维等操作。

项目成员

项目除了将各类资源集中进行管理与操作外,通常还会有多位用户共同来完成不同的职能。

  • 创建项目的用户为"项目所有者",此外还有项目管理员和普通项目成员,这3类角色都可以创建任务,并管理项目内的资源。

  • 每个项目只有一个项目所有者,可以有多位项目管理员,多位普通成员。

  • 每个用户可以同时参与多个项目。

  • 添加项目成员

项目所有者或项目管理员希望其他用户加入本项目,共同创建、维护任务时,需要将其他用户加入本项目。

  • 进入「项目管理→成员管理

  • 点击「添加成员」,输入成员账号进行搜索,并在搜索结果中选择一个或多个用户,为其设定角色,点击「确定」即可

  • 移除项目成员

项目所有者/项目管理员认为某用户无需在本项目中继续操作时,可将其移出本项目。

  • 进入「项目管理-成员管理

  • 项目成员列表中点击「移出项目」。某成员被移出项目后,不能在本项目中进行任何操作,但其已创建的任务、已上传的资源不会被删除。

  • 改变项目成员的角色

项目所有者想将普通成员置为项目管理员,与其一起管理项目组内的其他成员时,可将其"`置为管理员`"。相对的,也可以将项目管理员置为普通成员。

  • 进入「项目管理-成员管理

  • 项目成员列表中,分别点击「置为管理员」或「置为普通用户」。

  • 管理项目成员的权限

只有项目所有者和项目管理员才可以进行项目成员的管理,普通项目成员没有项目成员管理的权限。

任一项目中,除了项目创建者外,最多有其他2位项目管理员

项目配置

  • 启动周期调度:开启后,本项目将会每天生成周期实例。本功能常用于测试/生产环境区分的场景中,在开启了发布模式前提下,测试项目可以关闭周期实例生成功能,节约集群计算资源。

  • 下载SELECT结果:开启后,用户在"`数据开发`"模块中,通过SQL查询的结果集可以下载到本地,当项目管理员认为本项目需要较高程度的数据安全保护时,可以关闭下载功能,任何用户无法从SQL查询结果集中下载项目数据。

  • 发送任务运行情况报告:开启后,用户可设置每天固定时间点通过邮件、短信和钉钉接收到项目级的任务运行情况报告,报告内容包含今天计划的总任务实例数、截止设置的发送时间点运行成功的任务实例、未运行任务实例、失败任务实例、当前总表数和占用总存储数;

元数据同步

在项目创建的初始化阶段,系统会自动同步元数据,若后续用户一直在离线开发内操作,则「数据地图」模块内的表信息会与源库保持一致。若用户绕过离线开发平台,直接操作源库,会造成系统保存的元数据与源库不一致,此时需要进行元数据同步操作。
元数据同步操作入口位于「数据源」菜单,在数据源列表中寻找包含「meta」标识的项目默认数据源(参考创建项目),在「操作」中点击「同步元数据」,在打开的页面中观察未同步的元数据信息。

image.png

选择所属类目,设置生命周期,并点击「同步元数据」按钮,完成元数据的同步。元数据同步完成后,用户即可在数据地图中查看已同步过的元数据信息。

image.png