揭秘 Explorer Workflow 如何实现图计算工作流

pczhy
发布于 2022-9-29 14:13
浏览
0收藏

>>>>

前言

本次 NebulaGraph Explorer 3.1.0 版本加入了图计算工作流功能,针对 NebulaGraph 提供了图计算的能力,同时可以利用工作流的 nGQL 运行能力支持简单的数据读取,过滤及写入等数据处理功能。本文将简单分享下 NebulaGraph Explorer 中集成图计算的基本实现原理。

>>>>

整体架构

揭秘 Explorer Workflow 如何实现图计算工作流-鸿蒙开发者社区


上图 1 描述了 NebulaGraph Explorer Workflow 所涉及的相关系统及调用过程。

其中:

  • Explorer: 主要负责产出工作流的配置,提供操作工作流的 http api 服务,可视化展示及读取图计算工作流运行结果的能力。
  • Dag-Ctrl: 主要提供独立解析工作流,下发任务的能力,提供相应的 Job (单次运行的 workflow)和 Task (Job 中的具体任务节点)日志及启停能力,具有独立 web 服务。
  • Analytics: 提供运行具体任务节点的能力(运行算法,查询,写入等)
  • Datasources: 目前 Explorer 支持的各类数据源

>>>>

Frontend 交互界面

揭秘 Explorer Workflow 如何实现图计算工作流-鸿蒙开发者社区


我们在界面上利用高可定制,轻量级的开源自研流程图库 NebulaGraph-VEditor 🔗 开发。通过拖拉拽的交互方式,生成 DAG(有向无环图),并生成对应的 Workflow Code(流程描述代码),其中的各种算法节点通过 JSON 配置对应到 DAG-Ctrl 和 Analytics 的算法配置,可以灵活添加新任务节点,其配置结构大致如下:

analytics_sssp:{
      name: 'SSSP',//算法名称
      input: ['src', 'dst', 'weight'],// 输入字段和列
      output: ['vid', 'count'],// 输出字段和列
      form: {// 表单配置
        root: {
          component: 'input',
          isParam: true,
          label: 'RootId',
        },
      },
      algorithm: ""// Web图算法函数
}

其中通过设计两种锚点(参数锚点,数据锚点)来进行 Task 节点间的数据交互,中间数据格式统一抽象为 M*N 的 csv 格式。

  • 对于数据锚点,可以通过连线,将上游节点的输出锚点匹配到下游节点的输入锚点上,因此对于每个节点来说,数据输出和输入都表达为列的匹配即可。例如 Query 查询节点,其输入输出可以根据 nGQL 动态变化,因此输入输出的锚点也是动态可变的,用户可以自由地将 Query 输出的结果输出到一个或多个计算任务节点中。
  • 对于参数锚点,则可以改变算法的配置参数,或 nGQL 的字符串变量,这对于经常调整算法参数的计算流程非常有用,另外参数锚点也可以来自于上游的数据锚点,例如对图进行 SSSP (单源最短路径)运算,就可以通过参数锚点动态的从上游数据锚点中获取需要进行计算的根节点 ID,如下图:

揭秘 Explorer Workflow 如何实现图计算工作流-鸿蒙开发者社区


黄色标识的为参数锚点,白色标识的为数据锚点

可以利用这个特性,将常用的 nGQL 功能模块抽象为函数节点,快速构建图业务流程。

>>>>

Explorer Server 任务管理

NebulaGraph Explorer Server 会存储用户的 workflow 做为模板,用户可以利用前台界面和 API 网关调用 workflow 生成对应 Job 实例,将对应的 workflow 配置逻辑传输到 DAG-Ctrl 中运行。目前只支持手动生成实例,未来会加入定时调度能力,加强对 workflow 和 job 的管理能力。

在生成 Job 实例后,NebulaGraph Explorer Server 端会定时同步 DAG-Ctrl 的 Job 运行情况。

揭秘 Explorer Workflow 如何实现图计算工作流-鸿蒙开发者社区


>>>>

DAG-Ctrl

DAG 对用户配置的有向图进行解析后,会下发到 Analytics 集群中并行运算。这里我们抽离了 DAG 作为独立 Server,支持和 Explorer 分离部署,通过 HTTP 进行数据互通,NebulaGraph Explorer 默认会附带 DAG-Ctrl 包一键启动,并发压力情况较小的情况下,适合部署在一台机器上运行。由于下发任务需要登入相应的 Analytics 机器,因此需要用户先安装好 Analytics 后,对 DAG 所在机器给予 SSH 授权后才能使用。

DAG 在拿到对应的有向节点任务后会进行依赖优先级排序,依次 SSH 到 Analytics 机器中启动进行运算,并将运算结果地址传入下个节点任务中作为输入。

DAG 通过独立的 DB 用来存储运行过程中产生的任务和日志等数据。

>>>>

Analytics

NebulaGraph Analytics 是一款高性能的图计算工具,Explorer 不会附带 Analytics 启动,也不会感知到 Analytics 节点,主要通过 DAG-Ctrl 完成 Analytics 集群节点的交互配置,因此 NebulaGraph Explorer 提供一个配置界面供用户在线配置 DAG 需要的相关配置。

揭秘 Explorer Workflow 如何实现图计算工作流-鸿蒙开发者社区


其中 Analytics 集群和 HDFS 地址通过配置直接存储在 DAG-Ctrl 中,NebulGraph 则会默认在 NebulaGraph Explorer 登录后将登录信息加密后直接传输到 DAG-Ctrl 中。在 Analytics 计算服务运行时会从 DAG-Ctrl 下发的配置中取得需要写入或读取的数据源地址及相关的验证信息,完成计算后将数据写入到指定数据源中。关于 Analytics 的详细介绍可以参考我们之前发布的文章。

>>>>

工作流结果

NebulaGraph Explorer 对结果的读取主要有两种

  1. 直接捞取数据源中的数据,如直接读取 NebulaGraph、HDFS、CSV 等,这样在海量数据下可以获取到完整的计算结果。
  2. 通过 Explorer 可视化查看,因为受限于 http 的传输能力,在大数据量下,取 HDFS 数据会取指定大小的一部分文件回来进行渲染可视化,因此相当于对数据进行了采样后再展示。而对于 NebulaGraph 数据源则会通过分页在前台展示全量工作流结果。

在计算结果导入到 NebulaGraph Explorer 的画布上可视化后,由于计算结果返回的是一系列点 id,不能展示边和详细数据,因此我们提供了一个自动补齐数据的方案,会请求导入到画布的点之间所有可能的边数据,这样我们可以大致模拟出工作流结果间的图拓扑结构。




图计算可视化

对图计算出的结果集,我们针对图算法的类别进行了针对性的可视化展示。

  • 节点重要度、聚类系数、路径长度 - 值归一化到节点尺寸
  • 聚类  -  通过颜色标记 label
  • 图特征 - 对应形状的边颜色 / 高亮

揭秘 Explorer Workflow 如何实现图计算工作流-鸿蒙开发者社区


如上图进行 BNC (中介中心性计算)后,节点重要度一目了然。

>>>>

关于未来

未来 NebulaGraph Explorer Workflow 会逐渐完善并丰富目前的功能,同时在实际业务需求的基础上对现有功能进行优化,主要包含以下几个方向:

  • 加入定时调度,任务监控
  • 接入更多算子来实现数据清洗,合并等完备的ETL逻辑
  • 接入更多数据源
  • 定义完备的图计算可视化语言

本文转载自公众号nebula graph community

分类
已于2022-9-29 14:14:14修改
收藏
回复
举报
回复
    相关推荐