百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

复杂场景数据处理的 OLTP 与 OLAP 融合实践

bigegpt 2024-09-06 17:49 8 浏览

本文首发于 NebulaGraph 公众号

Dag Controller 介绍

Dag Controller 是 NebulaGraph 企业版的系统,经过反复测试无误后进行了发布,它主要解决的是 OLTP 和 OLAP 的融合问题,以及复杂场景下的图计算问题。也欢迎大家来详细了解下:https://docs.nebula-graph.com.cn/3.2.1/graph-computing/0.deploy-controller-analytics/。

下面是我对 Dag Controller 做的一些分享,欢迎大家留言一起探讨。

相信大家对 OLTP 和 OLAP 都不陌生,我这里再简单介绍下:** OLTP 是一种快速响应、实时在线的一种数据处理方式。与之对应的 OLAP,是一种离线的、复杂场景的数据计算方式**。对 NebulaGraph 来说,OLTP 有多种多样的查询语句,如:go、match 等。OLAP 有各种各样的图算法,如:pagerank、louvian、wcc、kcore、jaccard 等。

OLTP 和 OLAP 并不是一个一个独立存在的,举例来说,我们可以将 match 跑出来的子图喂给 pagerank 算法,pagerank 跑出来的结果可以写入到 NebulaGraph,继续执行 match 语句或其它算法。就像拼积木一样,可以将各种各样的 OLTP 和 OLAP 组装起来,形成一种更加复杂场景的数据处理方式。

Dag Controller 就是处理这种场景的系统,它负责 OLTP、OLAP 的串联和执行。

架构

Dag Controller 的职责:

1)向外部提供了 http 接口。

用于 Job 的提交、停止、删除等操作,以及系统环境的配置等。

2)DAG 的执行。

Dag Controller 在执行 DAG 时,OLAP 部分会调用 NebulaGraph Analytics 系统,OLTP 部分会调用 graphd 完成 nGQL 的执行。

NebulaGraph Analytics 是我们的图计算系统,支持 pagerank、wcc、louvain、jaccard 等图分析算法,支持 hdfs 和 NebulaGraph 数据源。

graphd、metad、storaged 是 NebulaGraph 中的组件,graphd 主要负责 nGQL 的解析,storaged 负责数据的存储,metad 负责元数据的存储。

案例

案例 1

上图是一个对子图跑 PageRank 算法的 DAG 模型,首先用 nGQL 语句获取一个子图,然后再对这个子图跑 PageRank 算法。

当我们的图规模特别大的情况下,且我们只想对部分图数据跑算法,就可以使用这种方式。

案例 2

上图是一个对两类顶点计算最短路径的模型。

首先,分别用 nGQL 分别获取两个类别的顶点 ID。然后再把这两类顶点 ID 交给 ShortestPath 算法,ShortestPath 会在全图中计算这两类顶点之间的路径。

每个算法是可以设置基于全图跑算法,也可以基于子图跑算法。

DAG 模型有多种多样,可以根据不用的业务场景搭建不同的 DAG 模型。

技术实现

DAG 模型

DAG(有向无环图)指的是一个没有回路的有向图。DAG 的一个实例看作是一个 Job,一个 Job 有多个 Task。

Dag Controller 中的 Task 可以是一个 nGQL,也可以是一个图算法,如 pagerank、louvain、sssp 等。

Job 执行时候需要先对 Task 排序,网上有很多相关的代码,这里不再赘述。

并行执行

为了保障 DAG 的执行效率,多个 DAG 需要做到并行执行。同时,在一个 DAG 的内部,无上下游依赖关系的Task也需要并行执行。

如何做到多个 DAG 并行执行以及 Task 的并行执行?简单的说,通过两个线程池分别处理 DAG 和 Task。

具体描述如下:

1)系统启动时,分配 Job 线程池和 Task 线程池,分别处理 Job 的执行和 Task 的执行。

2)定时地从数据库中获取未执行的 Job,交由 Job 线程池运行。

3)Job 执行时按照上下游的依赖关系对 Task 排序,然后依次判断每个 Task 的所有上游是否执行完成,上游执行完成后将此 Task 交给 Task 线程池执行,如果上游未执行完则等待。

4)在 Job 执行过程中,如果 Job 线程池满了之后,定时获取未执行 Job 时需要做等待处理。Task 线程池满了之后,也同样做等待处理。

类型校验

Task 之间的数据输入与输出存在数据类型校验问题,这里需要注意。比如:Task2 是 Task1 的下游,Task2 的输入需要的是 int 类型,而 Task1 输出也必须是 int 类型。

DAG 停止

在停止 Job 的时候,需要对多个并行运行的 Task 进行停止。一个 Task 的有准备阶段、运行阶段,并且运行阶段会存在跨机器、多进程的情况。停止 Job 需要避免孤儿进程的问题。

自定义算法支持

我们支持将客户的算法当作一种 Task,用于 DAG 的搭建。首先,在系统中配置算法相关的参数信息。在执行 Job 时,由系统负责运行与 Task 相对应的算法。


交流图数据库技术?加入 NebulaGraph 交流群可以添加微信小助手 NebulaGraphbot,NebulaGraph 小助手会拉你进群~~

NebulaGraph 的开源地址:https://github.com/vesoft-inc/nebula 觉得使用体验还不错的话,给我们的 GitHub 点个 ?? 鼓励下开源路上的我们呢~



相关推荐

Linux gron 命令使用详解(linux gminer)

简介gron是一个独特的命令行工具,用于将JSON数据转换为离散的、易于grep处理的赋值语句格式。它的名字来源于"grepableon"或"grepable...

【Linux】——从0到1的学习,让你熟练掌握,带你玩转Linu

学习Linux并掌握Java环境配置及SpringBoot项目部署是一个系统化的过程,以下是从零开始的详细指南,帮助你逐步掌握这些技能。一、Linux基础入门1.安装Linux系统选择发行版:推荐...

Linux常用的shell命令汇总(linux中shell的作用)

本文介绍Linux系统下常用的系统级命令,包括软硬件查看、修改命令,有CPU、内存、硬盘、网络、系统管理等命令。说明命令是在Centos6.464位的虚拟机系统进行测试的。本文介绍的命令都会在此C...

零成本搭建个人加密文件保险柜(适用于 Win11 和 Linux)

不依赖收费软件操作简单,小白也能跟着做支持双系统,跨平台使用实现数据加密、防删除、防泄露内容通俗无技术门槛,秒懂秒用使用工具简介我们将使用两个核心工具:工具名用途系统支持Veracrypt创建加密虚...

如何在 Linux 中使用 Gzip 命令?(linux怎么用gzip命令)

gzip(GNUzip)是Linux系统中一个开源的压缩工具,用于压缩和解压缩文件。它基于DEFLATE算法,广泛应用于文件压缩、备份和数据传输。gzip生成的文件通常带有.gz后缀,压缩效率...

Linux 必备的20个核心知识点(linux内核知识点)

学习和使用Linux所必备的20个核心知识点。这些知识点涵盖了从基础操作到系统管理和网络概念,是构建扎实Linux技能的基础。Linux必备的20个知识点1.Linux文件系统层级标...

谷歌 ChromeOS 已支持 7z、iso、tar 文件格式

IT之家6月21日消息,谷歌ChromeOS在管理文件方面进行了改进,新增了对7z、iso和tar等格式的支持。从5月的ChromeOS101更新开始,ChromeOS...

如何在 Linux 中提取 Tar Bz2 文件?

在深入解压方法之前,我们先来了解.tar.bz2文件的本质。.tar.bz2是一种组合文件格式,包含两个步骤:Tar(TapeArchive):tar是一种归档工具,用于将多个文件或目录打包...

如何在 CentOS 7/8 上安装 Kitematic Docker 管理器

Kitematic是一款流行的Docker图形界面管理平台,适用于Ubuntu、macOS和Windows操作系统。然而,其他发行版(如CentOS、OpenSUSE、Fedora、R...

Nacos3.0重磅来袭!全面拥抱AI,单机及集群模式安装详细教程!

之前和大家分享过JDK17的多版本管理及详细安装过程,然后在项目升级完jdk17后又发现之前的注册和配置中心nacos又用不了,原因是之前的nacos1.3版本的,版本太老了,已经无法适配当前新的JD...

爬虫搞崩网站后,程序员自制“Zip炸弹”反击,6刀服务器成功扛住4.6万请求

在这个爬虫横行的时代,越来越多开发者深受其害:有人怒斥OpenAI的爬虫疯狂“偷”数据,7人团队十年心血的网站一夜崩溃;也有人被爬虫逼到极限,最后只好封掉整个巴西的访问才勉强止血。但本文作者却走...

Ubuntu 操作系统常用命令详解(ubuntu必学的60个命令)

UbuntuLinux是一款流行的开源操作系统,广泛应用于服务器、开发、学习等场景。命令行是Ubuntu的灵魂,也是高效、稳定管理系统的利器。本文按照各大常用领域,详细总结Ubuntu必学...

Linux面板8.0.54 测试版-已上线(linux主机面板)

Linux面板8.0.54测试版【增加】[网站]Java项目新增刷新列表按钮【增加】[网站]PHP项目-Apache-服务新增守护进程功能【增加】[网站]Python项目创建/删除网站时新增同时创建...

开源三剑客——构建私有云世界的基石

公共云原生的浪潮正在席卷这个世界,亚马逊AWS、谷歌GCP和微软的Azure年收入增长超过了30%,越来越多的公司和个人开始将自己的服务部署到云环境中,大型数据中心的规模经济带来了成本的降低,可以在保...

2.2k star,一款业界领先的私有云+在线文档管理系统

简介kodbox可道云(原KodExplorer)是业内领先的企业私有云和在线文档管理系统,为个人网站、企业私有云部署、网络存储、在线文档管理、在线办公等提供安全可控,简便易用、可高度定制的私有云产品...