Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >NebulaGraph基于docker安装多机集群

NebulaGraph基于docker安装多机集群

原创
作者头像
堕落飞鸟
发布于 2023-12-22 05:42:03
发布于 2023-12-22 05:42:03
5610
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

一、背景

由于之前学习NebulaGraph安装时发现,官方文档中并未介绍使用docker安装多机集群的方式,加上后续分析内存使用时,我这有缺少相关实验环境,所有鼓捣了一下,如何实现基于docker的多机集群部署。希望也能帮助到需要的小伙伴

1.1、服务器信息

| 主机 | CPU | 内存 | 磁盘 | 操作系统 | 安装组件 |

| -------- | ---- | ---- | ---- | ----------- | -------- |

| ubuntu01 | 2 | 12 | 120 | ubuntu 2204 | ALL |

| ubuntu02 | 2 | 12 | 120 | ubuntu 2204 | ALL |

| ubuntu02 | 2 | 12 | 120 | ubuntu 2204 | ALL |

由于本人电脑配置实在拉胯,只能模拟三节点集群。

二、安装

2.1、基础安装

操作系统安装,docker安装跳过。

内核参数设置参考,文档

2.2、安装过程
2.2.1、通过官方文章多机集群部分,分析结构,使用官方docker-compose中的镜像。

首先确定安装路径,所有相关组件更路径使用/opt/NebulaGraph/,以下是各组件的路径。

meta: /opt/NebulaGraph/meta

graph: /opt/NebulaGraph/graph

storage: /opt/NebulaGraph/storage

同时各个组件目录下包含以下目录

bin:应用启动脚本

data: 应用数据目录

conf: 应用配置目录

logs: 应用日志目录

这样分配后,所有组件的各种安装信息将会非常清晰。创建相关目录

代码语言:bash
AI代码解释
复制
# 创建目录,三台机器

mkdir -p /opt/NebulaGraph/{meta,graph,storage}/{bin,data,conf,logs}/
2.2.2、下载镜像

通过官方的docker-compose.yaml中,找到我们需要的镜像地址,下载镜像

代码语言:bash
AI代码解释
复制
# 下载镜像,三台机器都下载

docker pull docker.io/vesoft/nebula-metad:nightly
docker pull docker.io/vesoft/nebula-graphd:nightly
docker pull docker.io/vesoft/nebula-storaged:nightly
2.2.3、准备配置文件

所有配置文件的模板,可以通过下载tar包安装方式获取

meta

官方文档地址

编辑配置文件,除了local_ip配置以外,其他配置三节点一样

代码语言:bash
AI代码解释
复制
vim  /opt/NebulaGraph/meta/conf/nebula-metad.conf

# 内容如下

########## basics ##########

# Whether to run as a daemon process

--daemonize=false

# The file to host the process id

--pid\_file=pids/nebula-metad.pid


########## logging ##########

# The directory to host logging files

--log\_dir=/logs

# Log level, 0, 1, 2, 3 for INFO, WARNING, ERROR, FATAL respectively

--minloglevel=0

# Verbose log level, 1, 2, 3, 4, the higher of the level, the more verbose of the logging

--v=0

# Maximum seconds to buffer the log messages

--logbufsecs=0

# Whether to redirect stdout and stderr to separate output files

--redirect\_stdout=true

# Destination filename of stdout and stderr, which will also reside in log\_dir.

--stdout\_log\_file=metad-stdout.log

--stderr\_log\_file=metad-stderr.log

# Copy log messages at or above this level to stderr in addition to logfiles. The numbers of severity levels INFO, WARNING, ERROR, and FATAL are 0, 1, 2, and 3, respectively.

--stderrthreshold=3

# wether logging files' name contain time stamp, If Using logrotate to rotate logging files, than should set it to true.

--timestamp\_in\_logfile\_name=true



########## networking ##########

# Comma separated Meta Server addresses

--meta\_server\_addrs=192.168.17.129:9559,192.168.17.130:9559,192.168.17.131:9559

# Local IP used to identify the nebula-metad process.

# Change it to an address other than loopback if the service is distributed or

# will be accessed remotely.

--local\_ip=192.168.17.129

# Meta daemon listening port

--port=9559

# HTTP service ip

--ws\_ip=0.0.0.0

# HTTP service port

--ws\_http\_port=19559

# Port to listen on Storage with HTTP protocol, it corresponds to ws\_http\_port in storage's configuration file

--ws\_storage\_http\_port=19779



########## storage ##########

# Root data path, here should be only single path for metad

--data\_path=/data/meta



########## Misc #########

# The default number of parts when a space is created

--default\_parts\_num=100

# The default replica factor when a space is created

--default\_replica\_factor=1



--heartbeat\_interval\_secs=10

--agent\_heartbeat\_interval\_secs=60

graph

官方文档地址

编辑配置文件,除了local_ip配置以外,其他配置三节点一样

代码语言:bash
AI代码解释
复制
vim  /opt/NebulaGraph/graph/conf/nebula-graphd.conf



# 内容如下

########## basics ##########

# Whether to run as a daemon process

--daemonize=false

# The file to host the process id

--pid\_file=pids/nebula-graphd.pid

# Whether to enable optimizer

--enable\_optimizer=true

# The default charset when a space is created

--default\_charset=utf8

# The default collate when a space is created

--default\_collate=utf8\_bin

# Whether to use the configuration obtained from the configuration file

--local\_config=true



########## logging ##########

# The directory to host logging files

--log\_dir=/logs

# Log level, 0, 1, 2, 3 for INFO, WARNING, ERROR, FATAL respectively

--minloglevel=0

# Verbose log level, 1, 2, 3, 4, the higher of the level, the more verbose of the logging

--v=0

# Maximum seconds to buffer the log messages

--logbufsecs=0

# Whether to redirect stdout and stderr to separate output files

--redirect\_stdout=true

# Destination filename of stdout and stderr, which will also reside in log\_dir.

--stdout\_log\_file=graphd-stdout.log

--stderr\_log\_file=graphd-stderr.log

# Copy log messages at or above this level to stderr in addition to logfiles. The numbers of severity levels INFO, WARNING, ERROR, and FATAL are 0, 1, 2, and 3, respectively.

--stderrthreshold=3

# wether logging files' name contain time stamp.

--timestamp\_in\_logfile\_name=true

########## query ##########

# Whether to treat partial success as an error.

# This flag is only used for Read-only access, and Modify access always treats partial success as an error.

--accept\_partial\_success=false

# Maximum sentence length, unit byte

--max\_allowed\_query\_size=4194304



########## networking ##########

# Comma separated Meta Server Addresses

--meta\_server\_addrs=192.168.17.129:9559,192.168.17.130:9559,192.168.17.131:9559

# Local IP used to identify the nebula-graphd process.

# Change it to an address other than loopback if the service is distributed or

# will be accessed remotely.

--local\_ip=192.168.17.129

# Network device to listen on

--listen\_netdev=any

# Port to listen on

--port=9669

# To turn on SO\_REUSEPORT or not

--reuse\_port=false

# Backlog of the listen socket, adjust this together with net.core.somaxconn

--listen\_backlog=1024

# The number of seconds Nebula service waits before closing the idle connections

--client\_idle\_timeout\_secs=28800

# The number of seconds before idle sessions expire

# The range should be in [1, 604800]

--session\_idle\_timeout\_secs=28800

# The number of threads to accept incoming connections

--num\_accept\_threads=1

# The number of networking IO threads, 0 for # of CPU cores

--num\_netio\_threads=0

# Max active connections for all networking threads. 0 means no limit.

# Max connections for each networking thread = num\_max\_connections / num\_netio\_threads

--num\_max\_connections=0

# The number of threads to execute user queries, 0 for # of CPU cores

--num\_worker\_threads=0

# HTTP service ip

--ws\_ip=0.0.0.0

# HTTP service port

--ws\_http\_port=19669

# storage client timeout

--storage\_client\_timeout\_ms=60000

# slow query threshold in us

--slow\_query\_threshold\_us=200000

# Port to listen on Meta with HTTP protocol, it corresponds to ws\_http\_port in metad's configuration file

--ws\_meta\_http\_port=19559



########## authentication ##########

# Enable authorization

--enable\_authorize=false

# User login authentication type, password for nebula authentication, ldap for ldap authentication, cloud for cloud authentication

--auth\_type=password



########## memory ##########

# System memory high watermark ratio, cancel the memory checking when the ratio greater than 1.0

--system\_memory\_high\_watermark\_ratio=0.8



########## metrics ##########

--enable\_space\_level\_metrics=false



########## experimental feature ##########

# if use experimental features

--enable\_experimental\_feature=false



# if use balance data feature, only work if enable\_experimental\_feature is true

--enable\_data\_balance=true



# enable udf, written in c++ only for now

--enable\_udf=true



# set the directory where the .so files of udf are stored, when enable\_udf is true

--udf\_path=/home/nebula/dev/nebula/udf/



########## session ##########

# Maximum number of sessions that can be created per IP and per user

--max\_sessions\_per\_ip\_per\_user=300



########## memory tracker ##########

# trackable memory ratio (trackable\_memory / (total\_memory - untracked\_reserved\_memory) )

--memory\_tracker\_limit\_ratio=0.8

# untracked reserved memory in Mib

--memory\_tracker\_untracked\_reserved\_memory\_mb=50



# enable log memory tracker stats periodically

--memory\_tracker\_detail\_log=false

# log memory tacker stats interval in milliseconds

--memory\_tracker\_detail\_log\_interval\_ms=60000



# enable memory background purge (if jemalloc is used)

--memory\_purge\_enabled=true

# memory background purge interval in seconds

--memory\_purge\_interval\_seconds=10



########## performance optimization ##########

# The max job size in multi job mode

--max\_job\_size=1

# The min batch size for handling dataset in multi job mode, only enabled when max\_job\_size is greater than 1

--min\_batch\_size=8192

# if true, return directly without go through RPC

--optimize\_appendvertices=false

# number of paths constructed by each thread

--path\_batch\_size=10000

storage

官方文档地址

编辑配置文件,除了local_ip配置以外,其他配置三节点一样

代码语言:bash
AI代码解释
复制
vim  /opt/NebulaGraph/storage/conf/nebula-storaged.conf



# 内容如下

########## basics ##########

# Whether to run as a daemon process

--daemonize=false

# The file to host the process id

--pid\_file=pids/nebula-storaged.pid

# Whether to use the configuration obtained from the configuration file

--local\_config=true



########## logging ##########

# The directory to host logging files

--log\_dir=/logs

# Log level, 0, 1, 2, 3 for INFO, WARNING, ERROR, FATAL respectively

--minloglevel=0

# Verbose log level, 1, 2, 3, 4, the higher of the level, the more verbose of the logging

--v=0

# Maximum seconds to buffer the log messages

--logbufsecs=0

# Whether to redirect stdout and stderr to separate output files

--redirect\_stdout=true

# Destination filename of stdout and stderr, which will also reside in log\_dir.

--stdout\_log\_file=storaged-stdout.log

--stderr\_log\_file=storaged-stderr.log

# Copy log messages at or above this level to stderr in addition to logfiles. The numbers of severity levels INFO, WARNING, ERROR, and FATAL are 0, 1, 2, and 3, respectively.

--stderrthreshold=3

# Wether logging files' name contain time stamp.

--timestamp\_in\_logfile\_name=true



########## networking ##########

# Comma separated Meta server addresses

--meta\_server\_addrs=192.168.17.129:9559,192.168.17.130:9559,192.168.17.131:9559

# Local IP used to identify the nebula-storaged process.

# Change it to an address other than loopback if the service is distributed or

# will be accessed remotely.

--local\_ip=192.168.17.129

# Storage daemon listening port

--port=9779

# HTTP service ip

--ws\_ip=0.0.0.0

# HTTP service port

--ws\_http\_port=19779

# heartbeat with meta service

--heartbeat\_interval\_secs=10



######### Raft #########

# Raft election timeout

--raft\_heartbeat\_interval\_secs=30

# RPC timeout for raft client (ms)

--raft\_rpc\_timeout\_ms=500

## recycle Raft WAL

--wal\_ttl=14400



########## Disk ##########

# Root data path. Split by comma. e.g. --data\_path=/disk1/path1/,/disk2/path2/

# One path per Rocksdb instance.

--data\_path=/data/storage



# Minimum reserved bytes of each data path

--minimum\_reserved\_bytes=268435456



# The default reserved bytes for one batch operation

--rocksdb\_batch\_size=4096

# The default block cache size used in BlockBasedTable.

# The unit is MB.

--rocksdb\_block\_cache=4

# The type of storage engine, `rocksdb', `memory', etc.

--engine\_type=rocksdb



# Compression algorithm, options: no,snappy,lz4,lz4hc,zlib,bzip2,zstd

# For the sake of binary compatibility, the default value is snappy.

# Recommend to use:

#   \* lz4 to gain more CPU performance, with the same compression ratio with snappy

#   \* zstd to occupy less disk space

#   \* lz4hc for the read-heavy write-light scenario

--rocksdb\_compression=lz4



# Set different compressions for different levels

# For example, if --rocksdb\_compression is snappy,

# "no:no:lz4:lz4::zstd" is identical to "no:no:lz4:lz4:snappy:zstd:snappy"

# In order to disable compression for level 0/1, set it to "no:no"

--rocksdb\_compression\_per\_level=



# Whether or not to enable rocksdb's statistics, disabled by default

--enable\_rocksdb\_statistics=false



# Statslevel used by rocksdb to collection statistics, optional values are

#   \* kExceptHistogramOrTimers, disable timer stats, and skip histogram stats

#   \* kExceptTimers, Skip timer stats

#   \* kExceptDetailedTimers, Collect all stats except time inside mutex lock AND time spent on compression.

#   \* kExceptTimeForMutex, Collect all stats except the counters requiring to get time inside the mutex lock.

#   \* kAll, Collect all stats

--rocksdb\_stats\_level=kExceptHistogramOrTimers



# Whether or not to enable rocksdb's prefix bloom filter, enabled by default.

--enable\_rocksdb\_prefix\_filtering=true

# Whether or not to enable rocksdb's whole key bloom filter, disabled by default.

--enable\_rocksdb\_whole\_key\_filtering=false



############## rocksdb Options ##############

# rocksdb DBOptions in json, each name and value of option is a string, given as "option\_name":"option\_value" separated by comma

--rocksdb\_db\_options={}

# rocksdb ColumnFamilyOptions in json, each name and value of option is string, given as "option\_name":"option\_value" separated by comma

--rocksdb\_column\_family\_options={"write\_buffer\_size":"67108864","max\_write\_buffer\_number":"4","max\_bytes\_for\_level\_base":"268435456"}

# rocksdb BlockBasedTableOptions in json, each name and value of option is string, given as "option\_name":"option\_value" separated by comma

--rocksdb\_block\_based\_table\_options={"block\_size":"8192"}



############### misc ####################

# Whether turn on query in multiple thread

--query\_concurrently=true

# Whether remove outdated space data

--auto\_remove\_invalid\_space=true

# Network IO threads number

--num\_io\_threads=16

# Max active connections for all networking threads. 0 means no limit.

# Max connections for each networking thread = num\_max\_connections / num\_netio\_threads

--num\_max\_connections=0

# Worker threads number to handle request

--num\_worker\_threads=32

# Maximum subtasks to run admin jobs concurrently

--max\_concurrent\_subtasks=10

# The rate limit in bytes when leader synchronizes snapshot data

--snapshot\_part\_rate\_limit=10485760

# The amount of data sent in each batch when leader synchronizes snapshot data

--snapshot\_batch\_size=1048576

# The rate limit in bytes when leader synchronizes rebuilding index

--rebuild\_index\_part\_rate\_limit=4194304

# The amount of data sent in each batch when leader synchronizes rebuilding index

--rebuild\_index\_batch\_size=1048576



########## memory tracker ##########

# trackable memory ratio (trackable\_memory / (total\_memory - untracked\_reserved\_memory) )

--memory\_tracker\_limit\_ratio=0.8

# untracked reserved memory in Mib

--memory\_tracker\_untracked\_reserved\_memory\_mb=50



# enable log memory tracker stats periodically

--memory\_tracker\_detail\_log=false

# log memory tacker stats interval in milliseconds

--memory\_tracker\_detail\_log\_interval\_ms=60000



# enable memory background purge (if jemalloc is used)

--memory\_purge\_enabled=true

# memory background purge interval in seconds

--memory\_purge\_interval\_seconds=10
2.2.4、启动脚本

meta

编辑启动脚本,给执行权限

代码语言:bash
AI代码解释
复制
vim  /opt/NebulaGraph/meta/bin/start.sh



# 内容 注意不同节点修改hostname、name

#!/bin/bash

docker run -d --network=host --hostname=ubuntu01 \

        --name meta01 --restart=always\

        -e USER=root \

        -e TZ=Asia/Shanghai \

        --cap-add SYS\_PTRACE \

        -v  /opt/NebulaGraph/meta/conf/nebula-metad.conf:/usr/local/nebula/etc/nebula-metad.conf \

        -v  /opt/NebulaGraph/meta/data:/data \

        -v  /opt/NebulaGraph/meta/logs:/logs \

        docker.io/vesoft/nebula-metad:nightly



# 修改权限

chmod 755 /opt/NebulaGraph/meta/bin/start.sh

graph

编辑启动脚本,给执行权限

代码语言:bash
AI代码解释
复制
vim  /opt/NebulaGraph/graph/bin/start.sh



# 内容 注意不同节点修改hostname、name

#!/bin/bash

docker run -d --network=host --hostname=ubuntu01 \

        --name graph01 --restart=always\

        -e USER=root \

        -e TZ=Asia/Shanghai \

        --cap-add SYS\_PTRACE \

        -v  /opt/NebulaGraph/graph/conf/nebula-graphd.conf:/usr/local/nebula/etc/nebula-graphd.conf \

        -v  /opt/NebulaGraph/graph/logs:/logs \

        docker.io/vesoft/nebula-graphd:nightly



# 修改权限

chmod 755 /opt/NebulaGraph/graph/bin/start.sh

storage

编辑启动脚本,给执行权限

代码语言:bash
AI代码解释
复制
vim /opt/NebulaGraph/storage/bin/start.sh



# 内容 注意不同节点修改hostname、name

#!/bin/bash

docker run -d --network=host --hostname=ubuntu01 \

        --name storage01 --restart=always\

        -e USER=root \

        -e TZ=Asia/Shanghai \

        --cap-add SYS\_PTRACE \

        -v  /opt/NebulaGraph/storage/conf/nebula-storaged.conf:/usr/local/nebula/etc/nebula-storaged.conf \

        -v  /opt/NebulaGraph/storage/data:/data \

        -v  /opt/NebulaGraph/storage/logs:/logs \

        docker.io/vesoft/nebula-storaged:nightly




# 修改权限

chmod 755 /opt/NebulaGraph/storage/bin/start.sh
2.2.5、启动应用

注意启动顺序,确保前一个应用启动成功后,在继续启动下一个meta--->storage--->graph

代码语言:bash
AI代码解释
复制
# 启动应用



/opt/NebulaGraph/meta/bin/start.sh

/opt/NebulaGraph/storage/bin/start.sh

/opt/NebulaGraph/graph/bin/start.sh
2.3、验证
2.3.1、使用console连接集群注册storage,console安装过程跳过,自行查看官方文档
代码语言:bash
AI代码解释
复制
# 连接

nebula-console -addr 192.168.17.129 --port 9669 -u root -p password


# 注册storage

ADD HOSTS 192.168.17.129:9779,192.168.17.130:9779,192.168.17.131:9779
2.3.1、使用console连接查看集群信息,console安装过程跳过,自行查看官方文档
代码语言:bash
AI代码解释
复制
# 连接
nebula-console -addr 192.168.17.129 --port 9669 -u root -p password

# 查看meta
show hosts meta

# 查看graph
show hosts graph

# 查看storage
show hosts

三、总结

3.1、先说说不完善的地方

受限于时间(从准备服务器到完成验证,已经搞了十几个小时了)没有在进一步的,实现agent安装以及备份恢复的测试。

整体的安装过程,还是有些繁琐,之后如果有时间,可以研究制作一个安装脚本,用于简化安装。

3.2、关于一些部署的考虑

官方的docker-compose部署,使用cmd来传递了配置参数,而我最终决定采用的挂载配置文件的方式,主要考虑后期维护时,修改参数只需要重启即可,不需要删除重建容器

进一步的将整个安装路径进行了重新规划,是整体上来看,更加清晰。

部署使用了docker 的host网络没有使用bridge网络,一方面是多机集群部署,不需要考虑端口冲突问题,另一方面就是host的网络性能会比bride高一点点。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
NebulaGraph使用docker-compose部署方式如何备份还原
之前的备份管理参考官网文档只实现了单机的备份,未能实现docker-compose部署方式的备份还原操作,实在睡不着啊,有道是垂死病中惊坐起,今天晚必须搞定他。。。。
堕落飞鸟
2023/12/14
5530
如何实现十亿级离线 CSV 导入 Nebula Graph
这里不做赘述,仅截图展示,更多详情可参考:https://docs.nebula-graph.com.cn/nebula-spark-connector/。
NebulaGraph
2022/06/13
9690
如何实现十亿级离线 CSV 导入 Nebula Graph
一文上手图数据备份恢复工具 NebulaGraph BR
NebulaGraph BR 开源已经有一段时间了,为了给社区用户提供一个更稳、更快、更易用的备份恢复工具,去年对其进行了比较大的重构。NebulaGraph BR(以下简称 BR)分为社区版和企业版两个版本,企业版在社区版功能的基础上,额外提供了增量备份的能力。而本文将以 BR 社区版为例,简单介绍 BR 的一些实现细节并通过上手练习来讲述如何使用 BR 进行 NebulaGraph 数据的备份恢复。
NebulaGraph
2023/03/09
5360
一文上手图数据备份恢复工具 NebulaGraph BR
用 Docker swarm 快速部署分布式图数据库 Nebula Graph 集群
本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群,并部署客户端负载均衡和高可用。
NebulaGraph
2020/10/14
9400
从一个 issue 出发,带你玩图数据库 NebulaGraph 内核开发
为了方便对 NebulaGraph 尚未了解的读者也能快速直接从贡献代码为起点了解它,我把开发、贡献内核代码入手所需要的基本架构知识在这里以最小信息量的形式总结一下。作为前导知识,请资深的 NebulaGraph 玩家直接跳过这一章节。
NebulaGraph
2022/12/06
6300
一文详解云上自动化部署集群管理工具 Nebula Operator
在介绍 Nebula Operator 之前,让我们先来了解下什么是 Operator。
NebulaGraph
2021/04/28
9720
一文详解云上自动化部署集群管理工具 Nebula Operator
如何运维多集群数据库?58 同城 NebulaGraph Database 运维实践
在公司各个业务线中,有不少部门都有着关系分析等图探索场景,随着业务发展,相关的需求越来越多。大量需求使用多模数据库来实现,开发成本和管理成本相对较高。
NebulaGraph
2023/02/15
4K0
如何运维多集群数据库?58 同城 NebulaGraph Database 运维实践
K8S Nubale3.3部署
https://docs.nebula-graph.com.cn/3.3.0/nebula-operator/4.connect-to-nebula-graph-service/
云计算小黑
2022/12/28
7373
在 Nebula K8s 集群中使用 nebula-spark-connector 和 nebula-algorithm
解决 K8s 部署 Nebula Graph 集群后连接不上集群问题最方便的方法是将 nebula-algorithm / nebula-spark 运行在与 nebula-operator 相同的网络命名空间里,将 show hosts meta 的 MetaD 域名:端口 格式的地址填进配置里就可以了。
NebulaGraph
2022/03/10
5510
在 Nebula K8s 集群中使用 nebula-spark-connector 和 nebula-algorithm
集群通信:从心跳说起
在用户使用 Nebula Graph 的过程中,经常会遇到各种问题,通常我们都会建议先通过 show hosts 查看集群状态。可以说,整个 Nebula Graph 的集群状态都是靠心跳机制来构建的。本文将从心跳说起,帮助你了解 Nebula Graph 集群各个节点之间通信的机制。
NebulaGraph
2021/04/01
1.3K0
集群通信:从心跳说起
如何实现一个数据库的 UDF?图数据库 NebulaGraph UDF 功能背后的设计与思考
大家好,我是来自 BOSS直聘的赵俊南,主要负责安全方面的图存储相关工作。作为一个从 v1.x 用到 v3.x 版本的忠实用户,在见证 NebulaGraph 发展的同时,也和它一起成长。
NebulaGraph
2023/09/13
4160
如何实现一个数据库的 UDF?图数据库 NebulaGraph UDF 功能背后的设计与思考
图数据库 Nebula Graph 的安装部署
Nebula Graph 是开源的第三代分布式图数据库,不仅能够存储万亿个带属性的节点和边,而且还能在高并发场景下满足毫秒级的低时延查询要求。不同于 Gremlin 和 Cypher,Nebula 提供了一种 SQL-LIKE 的查询语言 nGQL,通过三种组合方式(管道、分号和变量)完成对图的 CRUD 的操作。在存储层 Nebula Graph 目前支持 RocksDB 和 HBase 两种方式。
NebulaGraph
2019/09/06
2.8K0
实践分享|关于 nebula-stats-exporter 的使用
图数据库可以高效地表达、存储和分析复杂关系和网络,在特定场景下有着不错的性能。希望通过这篇 nebula-stats-exporter 的实践文章可以给各位读者朋友们一点启发。
用户11179359
2024/06/24
1120
实践分享|关于 nebula-stats-exporter 的使用
【Nebula Graph】:安装与部署
Nebula Graph is an open-source, distributed, easily scalable, and native graph database. It is capable of hosting graphs with hundreds of billions of vertices and trillions of edges, and serving queries with millisecond-latency.
WEBJ2EE
2021/10/27
1.8K0
云原生基础设施实践:NebulaGraph 的 KubeBlocks 集成故事
像是 NebulaGraph 这类基础设施上云,通用的方法一般是将线下物理机替换成云端的虚拟资源,依托各大云服务厂商实现“服务上云”。但还有一种选择,就是依托云数据基础设施,将数据库产品变成为云生态的一环,不只是提供自身的数据云服务,还能同其他的数据库一起分析挖掘业务数据价值。
NebulaGraph
2023/07/20
6220
云原生基础设施实践:NebulaGraph 的 KubeBlocks 集成故事
Chaos 测试下的若干 NebulaGraph Raft 问题分析
Raft 是一种广泛使用的分布式共识算法。NebulaGraph 底层采用 Raft 算法实现 metad 和 storaged 的分布式功能。Raft 算法使 NebulaGraph 中的 metad 和 storaged 能够集群化部署、实现了多副本和高可用,同时 storaged 通过 multi-raft 模块实现了数据分片,分散了系统的负载,提升系统的吞吐。
NebulaGraph
2022/12/14
8860
Chaos 测试下的若干 NebulaGraph Raft 问题分析
使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化
本文整理自 NebulaGraph PD 方扬在「NebulaGraph x KubeBlocks」meetup 上的演讲,主要包括以下内容:
NebulaGraph
2023/08/23
1.5K0
使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化
一文了解 NebulaGraph 上的 Spark 项目
最近我试着搭建了方便大家一键试玩的 Nebula Graph 中的 Spark 相关的项目,今天就把它们整理成文分享给大家。而且,我趟出来了 PySpark 下的 Nebula Spark Connector 的使用方式,后边也会一并贡献到文档里。
NebulaGraph
2022/07/18
8280
一文了解 NebulaGraph 上的 Spark 项目
从实测出发,掌握 NebulaGraph Exchange 性能最大化的秘密
自从开发完 NebulaGraph Exchange,混迹在各个 NebulaGraph 微信群的我经常会看到一类提问是:NebulaGraph Exchange 的性能如何?哪些参数调整下可以有更好的性能?…索性来一篇文章从实测出发,和大家讲讲如何用好这个数据工具。在本文你将获得 NebulaGraph Exchange 的最佳使用姿势。
NebulaGraph
2023/02/01
7070
从实测出发,掌握 NebulaGraph Exchange 性能最大化的秘密
无依赖单机尝鲜 Nebula Exchange 的 SST 导入
本文尝试分享下以最小方式(单机、容器化 Spark、Hadoop、Nebula Graph),快速趟一下 Nebula Exchange 中 SST 写入方式的步骤。本文适用于 v2.5 以上版本的 Nebula- Exchange。
NebulaGraph
2022/03/03
5720
推荐阅读
相关推荐
NebulaGraph使用docker-compose部署方式如何备份还原
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档