共计 3309 个字符,预计需要花费 9 分钟才能阅读完成。
前言
在可视化图摸索工具 NebulaGraph Explorer 3.1.0 版本中退出了图计算工作流性能,针对 NebulaGraph 提供了图计算的能力,同时能够利用工作流的 nGQL 运行能力反对简略的数据读取,过滤及写入等数据处理性能。
本文将简略分享下 NebulaGraph Explorer 中集成图计算的根本实现原理。
整体架构
上图 1 形容了 NebulaGraph Explorer Workflow 所波及的相干零碎及调用过程。
其中:
- Explorer:次要负责产出工作流的配置,提供操作工作流的 HTTP API 服务,可视化展现及读取图计算工作流运行后果的能力。
- Dag-Ctrl:次要提供独立解析工作流,下发工作的能力,提供相应的 Job(单次运行的 workflow)和 Task(Job 中的具体任务节点)日志及启停能力,具备独立 web 服务。
- Analytics:提供运行具体任务节点的能力(运行算法,查问,写入等)
- Datasources:目前 Explorer 反对的各类数据源。
前端交互界面
咱们在 NebulaGraph Explorer 界面上利用高定制、轻量级的开源自研流程图库 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,如下图:
(黄色标识的为参数锚点,红色标识的为数据锚点)
能够利用这个个性,将罕用的 nGQL 功能模块形象为函数节点,疾速构建图业务流程。
NebulaGraph Explorer Server 工作治理
NebulaGraph Explorer Server 会存储用户的 workflow 做为模板,用户能够利用前台界面和 API 网关调用 workflow 生成对应 Job 实例,将对应的 workflow 配置逻辑传输到 DAG-Ctrl 中运行。目前只反对手动生成实例,将来会退出定时调度能力,增强对 workflow 和 job 的治理能力。
在生成 Job 实例后,NebulaGraph Explorer Server 端会定时同步 DAG-Ctrl 的 Job 运行状况。
DAG-Ctrl
DAG 对用户配置的有向图进行解析后,会下发到 Analytics 集群中并行运算。这里咱们抽离了 DAG 作为独立 Server,反对和 Explorer 拆散部署,通过 HTTP 进行数据互通,NebulaGraph Explorer 默认会附带 DAG-Ctrl 包一键启动,并发压力状况较小的状况下,适宜部署在一台机器上运行。
因为下发工作须要登入相应的 Analytics 机器,因而须要用户先装置好 Analytics 后,对 DAG 所在机器给予 SSH 受权后能力应用。
DAG 在拿到对应的有向节点工作后会进行依赖优先级排序,顺次 SSH 到 Analytics 机器中启动进行运算,并将运算后果地址传入下个节点工作中作为输出。
DAG 通过独立的 DB 用来存储运行过程中产生的工作和日志等数据。
NebulaGraph Analytics
NebulaGraph Analytics 是一款高性能的图计算工具,Explorer 不会附带 Analytics 启动,也不会感知到 Analytics 节点,次要通过 DAG-Ctrl 实现 Analytics 集群节点的交互配置,因而 NebulaGraph Explorer 提供一个配置界面供用户在线配置 DAG 须要的相干配置。
其中,Analytics 集群和 HDFS 地址通过配置间接存储在 DAG-Ctrl 中,NebulaGraph 则会默认在 NebulaGraph Explorer 登录后将登录信息加密后间接传输到 DAG-Ctrl 中。在 Analytics 计算服务运行时会从 DAG-Ctrl 下发的配置中获得须要写入或读取的数据源地址及相干的验证信息,实现计算后将数据写入到指定数据源中。对于 Analytics 的具体介绍能够参考咱们之前公布的文章。
工作流后果
NebulaGraph Explorer 对后果的读取次要有两种
- 间接捞取数据源中的数据,如间接读取 NebulaGraph、HDFS、CSV 等,这样在海量数据下能够获取到残缺的计算结果。
- 通过 Explorer 可视化查看,因为受限于 HTTP 的传输能力,在大数据量下,取 HDFS 数据会取指定大小的一部分文件回来进行渲染可视化,因而相当于对数据进行了采样后再展现。而对于 NebulaGraph 数据源则会通过分页在前台展现全量工作流后果。
在计算结果导入到 NebulaGraph Explorer 的画布上可视化后,因为计算结果返回的是一系列点 ID,不能展现边和具体数据,因而咱们提供了一个主动补齐数据的计划,会申请导入到画布的点之间所有可能的边数据,这样咱们能够大抵模拟出工作流后果间的图拓扑构造。
图计算可视化
对图计算出的后果集,咱们针对图算法的类别进行了针对性的可视化展现。
- 节点重要度、聚类系数、门路长度 – 值归一化到节点尺寸
- 聚类 – 通过色彩标记 label
- 图特色 – 对应形态的边色彩 / 高亮
如上图进行 BNC (中介核心性计算)后,节点重要度高深莫测。
Web 图计算
除了以上介绍的图计算工作流外,针对小数据量,重可视化剖析的场景,NebulaGraph Explorer 额定提供了一套轻量级的 Web 端单机图计算计划,针对画布中用户已摸索出的图数据进行实时图计算。
如下图所示,目前反对工作流中的所有图算法,但因为局部不稳固算法(如 LPA), 散布单机及同步异步算法间的差别,少部分图算法会和工作流图计算结果有一些差别。
性能方面,咱们通过利用 Rust 将图算法编译为 WASM 在 Web 端运行,对于点边数量 1w 左右的场景, Floyd-Warshall 这类 O(n^3) 根本在 2s 左右即可实现,能实时疾速的对画布图数据进行可视化剖析,晋升小数据量下的图算法可视化体验。
对于将来
将来 NebulaGraph Explorer Workflow 会逐步欠缺并丰盛目前的性能,同时在理论业务需要的根底上对现有性能进行优化,次要蕴含以下几个方向:
- 退出定时调度,工作监控
- 接入更多算子来实现数据荡涤,合并等齐备的 ETL 逻辑
- 接入更多数据源
- 定义齐备的图计算可视化语言
欢送收费试用咱们的 NebulaGraph Explorer,体验残缺的 workflow 流程。
谢谢你读完本文 (///▽///)
NebulaGraph Desktop,Windows 和 macOS 用户装置图数据库的绿色通道,10s 拉起搞定海量数据的图服务。通道传送门:http://c.nxw.so/aved3
想看源码的小伙伴能够返回 GitHub 浏览、应用、(^з^)-☆ star 它 -> GitHub;和其余的 NebulaGraph 用户一起交换图数据库技术和利用技能,留下「你的名片」一起游玩呢~