轻松上手 —— 通过 RPM 包快速部署 NebulaGraph
前言
在当今大数据时代,处理复杂关系数据的需求与日俱增,图数据库应运而生并逐渐崭露头角。NebulaGraph 作为一款高性能、分布式且易扩展的图数据库,专为应对大规模图数据处理而精心打造。它不仅具备丰富的查询语言,还拥有强大高效的图计算能力,在社交网络分析、推荐系统、知识图谱构建等众多领域都有着广泛的应用,成为众多开发者和企业的首选技术方案。
在实际应用中,快速、稳定地部署 NebulaGraph 是充分发挥其优势的第一步。RPM 和 DEB 作为 Linux 系统下常见的安装包格式,为我们安装 NebulaGraph 提供了便捷途径。今天,我小支就将带领大家详细了解如何使用 RPM 包在 Linux 系统上高效安装 NebulaGraph,同时分享一些实用的优化建议以及常见问题的解决方案,助力大家轻松开启 NebulaGraph 的应用之旅。
一、环境准备:为 NebulaGraph 搭建稳固基石
(一)操作系统要求
NebulaGraph 目前仅支持在 Linux 系统下安装,且对操作系统版本有所限定,仅支持 CentOS 7.x、CentOS 8.x、Ubuntu 16.04、Ubuntu 18.04、Ubuntu 20.04 操作系统。为了让 NebulaGraph 发挥最佳性能,强烈推荐使用 64 位操作系统。例如,通过以下命令查看当前系统版本:
[root@instance2 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@instance2 ~]#
如果用户使用的是国产化的 Linux 操作系统,需要安装企业版 NebulaGraph ,以确保兼容性和稳定性。
(二)硬件要求
- CPU:为保证系统的流畅运行,建议使用至少 2 核心的 CPU,若数据处理任务较为繁重,4 核心或以上的 CPU 将是更好的选择。
- 内存:内存方面,至少需要 8GB RAM,并且要根据实际数据量的大小适当增加,以避免因内存不足导致性能瓶颈。
- 磁盘空间:充足的磁盘空间是存储数据和日志文件的基础,务必提前规划好足够的空间。
通过以下命令可以查看当前系统的硬件信息:
[root@instance2 ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c8 Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
[root@instance2 ~]# free -htotal used free shared buff/cache available
Mem: 31G 14G 6.3G 676K 10G 16G
Swap: 0B 0B 0B
[root@instance2 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos_caip122-root ext4 42G 27G 13G 68% /
devtmpfs devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 16G 0 16G 0% /dev/shm
tmpfs tmpfs 16G 676K 16G 1% /run
tmpfs tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda2 ext4 190M 93M 83M 53% /boot
/dev/sdc1 xfs 100G 103M 100G 1% /redo
/dev/sdb1 xfs 100G 41G 60G 41% /data
(三)访问官方文档
在正式开始安装之前,强烈建议大家访问 NebulaGraph 的官方文档网站:使用 RPM/DEB 包安装 - NebulaGraph Database 手册Documentation for NebulaGraph Database
https://docs.nebula-graph.com.cn/3.8.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb/
官方文档是我们学习和使用 NebulaGraph 的重要指南,其中包含了详细的安装说明、操作指南以及各种技术细节,能够为我们在安装和后续使用过程中提供有力支持。
(四)软件依赖
在安装 NebulaGraph 之前,需要确认已安装一些必要的软件包。执行以下命令安装相关依赖:
[root@instance2 ~]# yum install -y epel-release
Loaded plugins: fastestmirror
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#7 - "Failed to connect to 2600:1f16:c1:5e01:4180:6610:5482:c1c0: Network is unreachable"
base | 3.6 kB 00:00:00
epel/x86_64/metalink | 4.7 kB 00:00:00
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=extras&infra=stock error was
14: curl#7 - "Failed to connect to 2600:1f16:c1:5e01:4180:6610:5482:c1c0: Network is unreachable"
extras | 2.9 kB 00:00:00
mysql-connectors-community | 2.6 kB 00:00:00
mysql-tools-community | 2.6 kB 00:00:00
mysql57-community | 2.6 kB 00:00:00
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates&infra=stock error was
14: curl#7 - "Failed to connect to 2600:1f16:c1:5e01:4180:6610:5482:c1c0: Network is unreachable"
updates | 2.9 kB 00:00:00
Determining fastest mirrors* base: mirrors.bupt.edu.cn* epel: repo.jing.rocks* extras: mirrors.bupt.edu.cn* updates: mirrors.bupt.edu.cn
Package epel-release-7-14.noarch already installed and latest version
Nothing to do
[root@instance2 ~]# [root@instance2 ~]# yum install -y wget curl tar gcc make cmake openssl-devel python3-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.bupt.edu.cn* epel: repo.jing.rocks* extras: mirrors.bupt.edu.cn* updates: mirrors.bupt.edu.cn
Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version
Package gcc-4.8.5-44.el7.x86_64 already installed and latest version
Package 1:openssl-devel-1.0.2k-26.el7_9.x86_64 already installed and latest version
Resolving Dependencies
这些软件包是 NebulaGraph 正常安装和运行的基础,安装过程中需确保网络连接稳定,以便顺利下载相关软件包。
(五)下载安装包
- 阿里云 OSS 下载 release 版本
NebulaGraph 的安装包可以从阿里云 OSS 下载,URL 格式如下//Centos 7 https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.el7.x86_64.rpm - 使用 wget 命令进行下载,示例如下:
wget https://oss-cdn.nebula-graph.com.cn/package/3.8.0/nebula-graph-3.8.0.el7.x86_64.rpm
wget https://oss-cdn.nebula-graph.com.cn/package/3.8.0/nebula-graph-3.8.0.el7.x86_64.rpm.sha256sum.txt
执行上述命令后,系统会从指定链接下载对应的安装包及校验文件,下载过程中会显示下载进度和速度等信息:
[root@instance2 soft]# wget https://oss-cdn.nebula-graph.com.cn/package/3.8.0/nebula-graph-3.8.0.el7.x86_64.rpm
--2025-01-07 14:07:36-- https://oss-cdn.nebula-graph.com.cn/package/3.8.0/nebula-graph-3.8.0.el7.x86_64.rpm
Resolving oss-cdn.nebula-graph.com.cn (oss-cdn.nebula-graph.com.cn)... 220.181.166.204
Connecting to oss-cdn.nebula-graph.com.cn (oss-cdn.nebula-graph.com.cn)|220.181.166.204|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 64791652 (62M) [application/x-redhat-package-manager]
Saving to: ‘nebula-graph-3.8.0.el7.x86_64.rpm’100%[======================================================================================>] 64,791,652 7.54MB/s in 10s 2025-01-07 14:07:46 (6.12 MB/s) - ‘nebula-graph-3.8.0.el7.x86_64.rpm’ saved [64791652/64791652][root@instance2 soft]# wget https://oss-cdn.nebula-graph.com.cn/package/3.8.0/nebula-graph-3.8.0.el7.x86_64.rpm.sha256sum.txt
--2025-01-07 14:08:06-- https://oss-cdn.nebula-graph.com.cn/package/3.8.0/nebula-graph-3.8.0.el7.x86_64.rpm.sha256sum.txt
Resolving oss-cdn.nebula-graph.com.cn (oss-cdn.nebula-graph.com.cn)... 220.181.166.204
Connecting to oss-cdn.nebula-graph.com.cn (oss-cdn.nebula-graph.com.cn)|220.181.166.204|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 125 [text/plain]
Saving to: ‘nebula-graph-3.8.0.el7.x86_64.rpm.sha256sum.txt’100%[======================================================================================>] 125 --.-K/s in 0s 2025-01-07 14:08:06 (923 KB/s) - ‘nebula-graph-3.8.0.el7.x86_64.rpm.sha256sum.txt’ saved [125/125][root@instance2 soft]#
下载完成后,即可进行下一步的安装操作。
二、安装 NebulaGraph:步步为营,搭建数据基石
(一)创建指定安装目录
为了便于管理,我们先创建一个指定的安装目录。执行以下命令:
[root@instance2 opt]# mkdir -p app/nebula-graph
[root@instance2 opt]# cd app/nebula-graph/
[root@instance2 nebula-graph]# pwd
/opt/app/nebula-graph
[root@instance2 nebula-graph]#
上述命令创建了一个 /opt/app/nebula-graph 目录,并进入该目录,后续将在此目录下安装 NebulaGraph。
(二)安装 RPM 包
使用 rpm 命令安装下载的 RPM 包。如果要安装到 /opt/app/nebula-graph 目录,可以执行以下命令:
[root@instance2 soft]# ls
nebula-graph-3.8.0.el7.x86_64.rpm nebula-graph-3.8.0.el7.x86_64.rpm.sha256sum.txt openssh-rpms
[root@instance2 soft]# rpm -ivh --prefix=/opt/app/nebula-graph nebula-graph-3.8.0.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...1:nebula-graph-3.8.0-1 ################################# [100%]
[root@instance2 soft]#
其中,--prefix 为可选项,用于指定安装路径。若不设置该选项,系统会将 NebulaGraph 安装到默认路径 /usr/local/nebula/。例如,要在默认路径下安装 3.8.0 版本的 RPM 包,可运行如下命令:
sudo rpm -ivh nebula-graph-3.8.0.el7.x86_64.rpm
安装过程中,系统会显示安装进度和相关信息,安装完成后,NebulaGraph 的相关文件和目录结构就会按照指定路径或默认路径生成。
(三)配置 NebulaGraph
安装完成后,默认情况下 NebulaGraph 的配置文件位于 /etc/nebula/ 目录下(若安装到自定义路径,配置文件位置会相应改变)。我们可以根据实际需求编辑这些配置文件来调整服务参数,比如修改监听端口、设置集群模式等。以编辑 /opt/app/nebula-graph/etc 目录下的 nebula-graphd.conf 文件为例:
[root@instance2 opt]# cd app/nebula-graph/
[root@instance2 nebula-graph]# ls
bin etc scripts share
[root@instance2 nebula-graph]# cd etc/
[root@instance2 etc]# ls
nebula-graphd.conf nebula-metad.conf.default nebula-storaged.conf.production
nebula-graphd.conf.default nebula-metad.conf.production nebula-storaged-listener.conf.production
nebula-graphd.conf.production nebula-storaged.conf
nebula-metad.conf nebula-storaged.conf.default
[root@instance2 etc]# vim nebula-graphd.conf
在配置文件中,我们可以根据官方文档的指导,对各项参数进行合理设置,以满足不同的业务场景和性能需求。配置完成后,保存并退出编辑器,即可完成配置文件的修改。
三、启动 NebulaGraph 服务:让数据引擎运转起来
(一)使用脚本管理服务
NebulaGraph 提供了脚本 nebula.service 来方便地管理服务,包括启动、停止、重启、中止和查看等操作。nebula.service 的默认路径是 /usr/local/nebula/scripts,如果之前修改过安装路径,请使用实际路径。该脚本的语法参数及说明如下:
| 参数 | 说明 |
|---|---|
| -v | 显示详细调试信息 |
| -c | 指定配置文件路径,默认路径为 /usr/local/nebula/etc/ |
| start | 启动服务 |
| stop | 停止服务 |
| restart | 重启服务 |
| kill | 中止服务 |
| status | 查看服务状态 |
| metad | 管理 Meta 服务 |
| graphd | 管理 Graph 服务 |
| storaged | 管理 Storage 服务 |
| all | 管理所有服务 |
(二)查询服务状态
在启动服务之前,我们可以先查询 NebulaGraph 服务的当前状态。执行以下命令:
[root@instance2 etc]# /opt/app/nebula-graph/scripts/nebula.service status all
[INFO] nebula-metad(7458486): Exited
[INFO] nebula-graphd(7458486): Exited
[INFO] nebula-storaged(7458486): Exited
[root@instance2 etc]#
从上述结果可以看出,当前服务处于未启动状态。如果安装在默认路径下,查询命令为:
sudo /usr/local/nebula/scripts/nebula.service status all
(三)启动 NebulaGraph 服务
使用如下命令启动所有 NebulaGraph 进程:
[root@instance2 etc]# /opt/app/nebula-graph/scripts/nebula.service start all
[INFO] Starting nebula-metad...
[INFO] Done
[INFO] Starting nebula-graphd...
[INFO] Done
[INFO] Starting nebula-storaged...
[INFO] Done
[root@instance2 etc]#
执行该命令后,脚本会依次启动 Meta 服务、Graph 服务和 Storage 服务,并在每一步完成时输出相应的 “Done” 信息,表明服务启动成功。若启动过程中出现错误,需根据错误提示排查原因,比如检查配置文件是否正确、依赖服务是否正常运行等。
(四)停止 NebulaGraph 服务
停止 NebulaGraph 服务时,务必不要使用 kill -9 命令强制终止进程,因为这可能在极小概率下导致数据丢失。正确的做法是执行如下命令:
[root@instance2 nebula - graph]# /opt/app/nebula - graph/scripts/nebula.service stop all
[INFO] Stopping nebula - metad...
[INFO] Done
[INFO] Stopping nebula - graphd...
[INFO] Done
[INFO] Stopping nebula - storaged...
[INFO] Done
[root@instance2 nebula - graph]#
该命令会按照顺序安全地停止各个服务,确保数据的完整性和一致性。
(五)查看 NebulaGraph 服务
执行如下命令可查看 NebulaGraph 服务状态:
[root@instance2 etc]# /opt/app/nebula - graph/scripts/nebula.service status all
如果返回如下结果,则表示 NebulaGraph 服务正常运行:
[INFO] nebula - metad(33fd35e): Running as 29020, Listening on 9559
[INFO] nebula - graphd(33fd35e): Running as 29095, Listening on 9669
[WARN] nebula - storaged after v3.0.0 will not start service until it is added to cluster.
[WARN] See Manage Storage hosts:ADD HOSTS in https://docs.nebula - graph.io/
[INFO] nebula - storaged(33fd35e): Running as 29147, Listening on 9779
需要注意的是,正常启动 NebulaGraph 后,nebula - storaged 进程的端口显示红色属于正常现象。这是因为 nebula - storaged 在启动流程中会等待 nebula - metad 添加当前 Storage 服务,当前 Storage 服务收到 Ready 信号后才会正式启动服务。从 3.0.0 版本开始,在配置文件中添加的 Storage 节点无法直接读写,配置文件的作用仅仅是将 Storage 节点注册至 Meta 服务中。必须使用 ADD HOSTS 命令后,才能正常读写 Storage 节点。更多信息,可参见管理 Storage 主机相关文档。
(六)启动报错及解决办法
- 启动时报错 Storage hosts: 服务异常
如果返回类似如下结果,表示 NebulaGraph 服务异常:
[root@instance2 etc]# /opt/app/nebula - graph/scripts/nebula.service status all
[INFO] nebula - metad(7458486): Running as 26056, Listening on 9559
[INFO] nebula - graphd(7458486): Running as 26079, Listening on 9669
[WARN] nebula - storaged after v3.0.0 will not start service until it is added to cluster.
[WARN] See Manage Storage hosts:ADD HOSTS in https://docs.nebula - graph.io/
[INFO] nebula - storaged(7458486): Running as 26101, Listening on 9779
[root@instance2 etc]#
此时,可以根据异常服务信息进一步排查,或者在 NebulaGraph 社区寻求帮助。
2. 参考官方文档解决
可查阅官方文档;管理 Storage 主机 - NebulaGraph Database 手册Documentation for NebulaGraph Database
https://docs.nebula-graph.com.cn/3.8.0/4.deployment-and-installation/manage-storage-host/
获取解决方案。例如,当查询状态出现 “OFFLINE” 节点失败时:
(root@nebula) [(none)]> SHOW HOSTS STORAGE;
+----------------+------+-----------+-----------+--------------+---------+
| Host | Port | Status | Role | Git Info Sha | Version |
+----------------+------+-----------+-----------+--------------+---------+
| "127.0.0.1" | 9779 | "OFFLINE" | "STORAGE" | "" | |
+----------------+------+-----------+-----------+--------------+---------+
Got 2 rows (time spent 1.722ms/2.445398ms)Tue, 07 Jan 2025 15:16:46 CST
(root@nebula) [(none)]>

- 向集群中增加 Storage 主机
可以通过执行以下命令向集群中增加 Storage 主机:
-
(root@nebula) [(none)]> ADD HOSTS 127.0.0.1:9779; Execution succeeded (time spent 1.593ms/2.152096ms)Tue, 07 Jan 2025 15:16:40 CST(root@nebula) [(none)]> 
- 再次检查状态
再次查看服务状态:
[root@instance2 nebula - graph]# /opt/app/nebula - graph/scripts/nebula.service status all
[INFO] nebula - metad(7458486): Running as 43288, Listening on 9559
[INFO] nebula - graphd(7458486): Running as 43320, Listening on 9669
[INFO] nebula - storaged(7458486): Running as 43408, Listening on 9779
[root@instance2 nebula - graph]#

同时在客户端查询:
(root@nebula) [(none)]> SHOW HOSTS STORAGE;
+-------------+------+----------+-----------+--------------+---------+
| Host | Port | Status | Role | Git Info Sha | Version |
+-------------+------+----------+-----------+--------------+---------+
| "127.0.0.1" | 9779 | "ONLINE" | "STORAGE" | "7458486" | "3.8.0" |
+-------------+------+----------+-----------+--------------+---------+
Got 1 rows (time spent 1.198ms/1.961314ms)Tue, 07 Jan 2025 15:21:41 CST(root@nebula) [(none)]>

可以看到 Storage 主机状态变为 “ONLINE”,表明问题已解决。NebulaGraph 服务由 Meta 服务、Graph 服务和 Storage 服务共同提供,这三种服务的配置文件都保存在安装目录的 etc 目录内,默认路径为 /usr/local/nebula/etc/,用户可以检查相应的配置文件排查问题。
四、安装图形化工具 nebula - console:便捷操作 NebulaGraph
NebulaGraph 支持多种类型的客户端,包括命令行客户端、可视化界面客户端和流行编程语言客户端。详情可参见客户端列表。这里我们重点介绍原生命令行客户端 nebula - console 的安装和使用。
(一)下载 nebula - console
nebula - console 是 NebulaGraph 的命令行客户端工具。我们可以从 GitHub 的发布页面下载对应版本的二进制执行包。版本相同的 NebulaGraph Console 和 NebulaGraph 兼容程度最高,版本不同的 NebulaGraph Console 连接 NebulaGraph 时,可能会有兼容问题,或者无法连接并报错 “incompatible version between client and server”。在 Assets 区域找到机器运行所需的二进制文件,下载文件到机器上。
(二)重命名 nebula - console
为了方便使用,可以重命名下载的文件为 nebula - console。操作如下:
[root@instance2 nebula - graph]# ls
bin data etc logs pids scripts share
[root@instance2 nebula - graph]# ls
bin data etc logs nebula - console - linux - amd64 - v3.8.0 pids scripts share
[root@instance2 nebula - graph]# mv nebula - console - linux - amd64 - v3.8.0 nebula - console
[root@instance2 nebula - graph]# ls
bin data etc logs nebula - console pids scripts share
[root@instance2 nebula - graph]#
(三)授予 nebula - console 权限
在运行 NebulaGraph Console 的机器上执行如下命令,为用户授予 nebula - console 文件的执行权限:
[root@instance2 nebula - graph]# ls
bin data etc logs nebula - console pids scripts share
[root@instance2 nebula - graph]# chmod +x nebula - console
[root@instance2 nebula - graph]# ls
bin data etc logs nebula - console pids scripts share
[root@instance2 nebula - graph]#

或者执行 $ chmod 111 nebula - console 也可达到相同效果。在命令行界面中,切换工作目录至 nebula - console 文件所在目录,以便后续执行连接操作。
五、连接 NebulaGraph:开启数据探索之旅
(一)执行如下命令连接 NebulaGraph
使用以下命令连接 NebulaGraph:
[root@instance2 nebula - graph]# ls
bin cluster.id data etc logs nebula - console pids scripts share
[root@instance2 nebula - graph]# ./nebula - console --addr 127.0.0.1 --port 9669 -u root -p nebulaWelcome!(root@nebula) [(none)]>
上述命令中的参数说明如下:
| 参数 | 说明 |
|---|---|
| -h/-help | 显示帮助菜单 |
| -addr/-address | 设置要连接的 Graph 服务的 IP 或主机名。默认地址为 127.0.0.1 |
| -P/-port | 设置要连接的 Graph 服务的端口。默认端口为 9669 |
| -u/-user | 设置 NebulaGraph 账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为 root) |
| -p/-password | 设置用户名对应的密码。未启用身份认证时,密码可以填写任意字符 |
| -t/-timeout | 设置整数类型的连接超时时间。单位为毫秒,默认值为 120 |
| -e/-eval | 设置字符串类型的 nGQL 语句。连接成功后会执行一次该语句并返回结果,然后自动断开连接 |
| -f/-file | 设置存储 nGQL 语句的文件的路径。连接成功后会执行该文件内的 nGQL 语句并返回结果,执行完毕后自动断开连接 |
| -enable_ssl | 连接 NebulaGraph 时使用 SSL 加密 |
| -ssl_root_ca_path | 指定 CA 证书的存储路径 |
| -ssl_cert_path | 指定 CRT 证书的存储路径 |
| -ssl_private_key_path | 指定私钥文件的存储路径 |
(二)验证安装
为了验证 NebulaGraph 是否成功安装并正常工作,可以尝试连接到图数据库并执行简单的查询。这里我们使用官方提供的命令行工具 nebula - console:
[root@instance2 nebula - graph]# ./nebula - console --addr 127.0.0.1 --port 9669 -u root -p nebulaWelcome!(root@nebula) [(none)]> SHOW HOSTS;
+-------------+------+----------+--------------+----------------------+------------------------+---------+
| Host | Port | Status | Leader count | Leader distribution | Partition distribution | Version |
+-------------+------+----------+--------------+----------------------+------------------------+---------+
| "127.0.0.1" | 9779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.8.0" |
+-------------+------+----------+--------------+----------------------+------------------------+---------+
Got 1 rows (time spent 1.732ms/2.91408ms)Wed, 08 Jan 2025 11:18:14 CST(root@nebula) [(none)]>

如果能够顺利创建空间、定义标签并插入节点,则说明安装成功。例如,创建空间的命令如下:
(root@nebula) [(none)]> CREATE SPACE IF NOT EXISTS my_space (vid_type = FIXED_STRING(30));
Execution succeeded (time spent 1.542ms/2.076204ms)
(root@nebula) [(none)]>
定义标签和插入节点的命令可参考官方文档中的 nGQL 语法进行操作。若都能正常执行且返回预期结果,那么恭喜你,NebulaGraph 已成功安装并可正常使用。
六、安装 NebulaGraph Studio:可视化数据洞察
NebulaGraph Studio 是 NebulaGraph 的可视化工具,它为用户提供了直观便捷的数据管理和查询界面。我们可以从官方 CDN 地址下载 RPM 包并安装。
(一)下载 NebulaGraph Studio
使用 wget 命令下载:
wget https://oss - cdn.nebula - graph.com.cn/nebula - graph - studio/3.8.0/nebula - graph - studio - 3.8.0.x86_64.rpm
下载完成后,执行安装命令:
rpm -ivh --prefix=/opt/app/nebula - graph - studio nebula - graph - studio - 3.8.0.x86_64.rpm
下载过程示例如下:
[root@instance2 soft]# wget https://oss - cdn.nebula - graph.com.cn/nebula - graph - studio/3.8.0/nebula - graph - studio - 3.8.0.x86_64.rpm
--2025-01-08 10:13:04-- https://oss - cdn.nebula - graph.com.cn/nebula - graph - studio/3.8.0/nebula - graph - studio - 3.8.0.x86_64.rpm
Resolving oss - cdn.nebula - graph.com.cn (oss - cdn.nebula - graph.com.cn)... 220.181.167.219
Connecting to oss - cdn.nebula - graph.com.cn (oss - cdn.nebula - graph.com.cn)|220.181.167.219|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 27310960 (26M) [application/x - rpm]
Saving to: ‘nebula - graph - studio - 3.8.0.x86_64.rpm’100%[======================================================================================>] 27,310,960 15.0MB/s in 1.7s 2025-01-08 10:13:07 (15.0 MB/s) - ‘nebula - graph - studio - 3.8.0.x86_64.rpm’ saved [27310960/27310960][root@instance2 soft]#
(二)安装 NebulaGraph Studio
执行安装命令后,系统会自动进行安装:
[root@instance2 soft]# rpm -ivh --prefix=/opt/app/nebula - graph - studio nebula - graph - studio - 3.8.0.x86_64.rpm
Preparing... ################################# [100%]
Start installing NebulaGraph Studio now...
Updating / installing...1:nebula - graph - studio - 3.8.0-1 ################################# [100%]
NebulaGraph Studio has been installed.
Created symlink from /etc/systemd/system/multi - user.target.wants/nebula - graph - studio.service to /usr/lib/systemd/system/nebula - graph - studio.service.
NebulaGraph Studio started automatically.
[root@instance2 soft]#

如果希望安装在默认路径下,可执行:
sudo rpm -ivh nebula - graph - studio - 3.8.0.x86_64.rpm
(三)浏览器中访问登录
在浏览器地址栏输入http://127.0.0.1:7001/login ,若页面成功加载出 NebulaGraph Studio 的登录界面,意味着部署和启动顺利完成。首次登录时,需根据系统提示设置用户名和密码。登录成功后,将进入 NebulaGraph Studio 的主界面,在这里可以直观地管理图空间、执行查询语句、可视化展示图数据结构等操作。

(四)报错及解决办法
- 安装报错
安装过程中可能会遇到报错情况,例如:
[root@instance2 soft]# rpm -ivh --prefix=/opt/app/nebula - graph - studio nebula - graph - studio - 3.8.0.x86_64.rpm
Preparing... ################################# [100%]
/var/tmp/rpm - tmp.w5nIeb: line 2: type: lsof: not found
Install failed for the reason: the command lsof required
error: %pre(nebula - graph - studio - 3.8.0 - 1.x86_64) scriptlet failed, exit status 1
error: nebula - graph - studio - 3.8.0 - 1.x86_64: install failed
[root@instance2 soft]#

上述报错提示缺少lsof命令。
2. 报错缺少 lsof,安装 lsof
为解决此问题,可通过包管理器安装lsof。在 CentOS 系统上,执行以下命令:
[root@instance2 soft]# yum install lsof

安装过程中,系统会自动解析依赖关系并下载安装lsof及其相关依赖包。安装完成后,即可解决因缺少lsof导致的安装失败问题。
3. 重新尝试安装 nebula - graph - studio
安装好lsof后,再次执行 NebulaGraph Studio 的安装命令:

[root@instance2 soft]# rpm -ivh --prefix=/opt/app/nebula - graph - studio nebula - graph - studio - 3.8.0.x86_64.rpm
此时,安装过程将顺利进行,NebulaGraph Studio 将成功安装到指定路径或默认路径下。
性能优化建议
- 调优 JVM 参数:NebulaGraph 的 Graph 服务基于 Java 开发,合理调整 JVM 的堆大小和其他相关参数对性能提升效果显著。例如,通过修改
JAVA_OPT环境变量来调整堆内存大小,可参考以下命令: - 上述命令将 JVM 的初始堆内存和最大堆内存均设置为 4GB,具体数值应根据服务器实际内存资源和业务负载进行调整。若业务数据量较大且查询复杂,适当增大堆内存可减少 GC(垃圾回收)次数,提升服务响应速度。
- 合理规划分区与副本:根据业务特点和数据分布情况精心设计分区策略和副本因子。对于读多写少的业务场景,可适当增加副本数量以提高读性能;对于写操作频繁的场景,则需平衡分区数量和副本数量,避免因过多副本同步导致写性能下降。例如,在创建图空间时可指定分区数量和副本因子:
-
CREATE SPACE my_space (vid_type = FIXED_STRING(30), partition_num = 16, replica_factor = 3); - 上述命令创建了一个名为
my_space的图空间,设置了 16 个分区和 3 个副本,可根据实际业务需求灵活调整这些参数。 - 监控与报警:部署监控系统实时跟踪 NebulaGraph 的运行状态至关重要。可使用 NebulaGraph 自带的监控指标,也可集成第三方监控工具如 Prometheus 和 Grafana。通过监控 CPU 使用率、内存使用率、磁盘 I/O、网络流量、查询响应时间等关键指标,及时发现潜在问题。同时,设置合理的报警阈值,当指标超出阈值时,通过邮件、短信等方式及时通知运维人员,以便快速响应和处理问题,保障系统的稳定性和可用性。
常见问题及解决方案
- 无法启动服务
- 检查日志文件:NebulaGraph 的日志文件位于
/var/log/nebula/目录下(安装路径自定义时,日志路径可能不同)。通过查看nebula - metad.log、nebula - graphd.log和nebula - storaged.log文件中的错误信息,能够定位服务启动失败的原因。例如,若nebula - graphd.log中出现 “Failed to bind to port 9669: Address already in use”,则表明 9669 端口已被其他进程占用,需要停止占用该端口的进程或修改 NebulaGraph 的 Graph 服务端口配置。 - 确认防火墙规则:确保防火墙允许 NebulaGraph 所需的端口通信。NebulaGraph 默认使用 9559 端口用于 Meta 服务、9669 端口用于 Graph 服务、9779 端口用于 Storage 服务。在 CentOS 系统上,可通过以下命令开放端口:
- 检查日志文件:NebulaGraph 的日志文件位于
firewall - cmd --zone=public --add - port=9559/tcp --permanent
firewall - cmd --zone=public --add - port=9669/tcp --permanent
firewall - cmd --zone=public --add - port=9779/tcp --permanent
firewall - cmd --reload
- 连接超时
- 检查白名单设置:确保客户端 IP 地址已被正确添加到 NebulaGraph 的白名单中。若未启用身份认证,可通过修改
nebula - graphd.conf配置文件中的--whitelist参数来添加允许连接的 IP 地址段。例如:
- 检查白名单设置:确保客户端 IP 地址已被正确添加到 NebulaGraph 的白名单中。若未启用身份认证,可通过修改
--whitelist="192.168.1.0/24,10.0.0.0/8"
上述配置允许192.168.1.0网段和10.0.0.0网段的 IP 地址连接到 Graph 服务。
- 优化查询复杂度或分批提交请求:如果查询语句过于复杂,可能导致连接超时。尝试简化查询逻辑,或者将大查询拆分成多个小查询分批提交。例如,对于一个涉及大量数据扫描和复杂关联的查询,可通过增加索引、减少不必要的过滤条件等方式优化查询性能;对于批量插入数据操作,可采用分批提交的方式,避免一次性提交过多数据导致连接超时。
- 性能瓶颈
- 分析慢查询日志:NebulaGraph 的 Graph 服务会记录慢查询日志,通过分析
slow_query.log文件,识别出执行时间较长的查询语句。针对这些慢查询,可通过优化查询语句、添加合适的索引、调整查询执行计划等方式进行优化。例如,若查询语句频繁进行全表扫描,可根据查询条件为相关字段添加索引,以加快查询速度。 - 增加硬件资源或调整配置参数:若系统资源(如 CPU、内存、磁盘 I/O)已接近饱和,可考虑增加硬件资源,如升级 CPU、增加内存或更换高速磁盘。同时,也可通过调整 NebulaGraph 的配置参数来优化性能。例如,适当增加
nebula - storaged.conf中的--rocksdb_max_background_jobs参数值,可提高 Storage 服务的 I/O 并发处理能力,但需根据实际硬件资源情况谨慎调整,避免过度消耗资源导致系统不稳定。
- 分析慢查询日志:NebulaGraph 的 Graph 服务会记录慢查询日志,通过分析
总结
本篇博客小支同学详细介绍了如何使用 RPM 包在 CentOS 系统上安装 NebulaGraph,并简要介绍了其配置、启动、连接以及相关工具(nebula - console 和 NebulaGraph Studio)的安装使用方法,同时分享了性能优化建议和常见问题解决方案。NebulaGraph 作为一款开源、分布式图数据库,具备高性能、高可用性和可扩展性等优势,能够出色地处理超大规模数据集和复杂数据关系。通过本文的介绍,相信读者已经掌握了在 CentOS 系统上安装和使用 NebulaGraph 的基本技能,为进一步深入学习和应用打下了坚实基础。希望这篇文章能够帮助大家更好地理解和掌握 NebulaGraph 的安装过程。随着实践经验的积累,相信友友们会发现更多有趣的功能和技术细节,从而进一步挖掘图数据库的巨大潜力。
- 安装流程:先介绍 NebulaGraph 优势及安装意义,接着阐述安装前准备工作,如确认系统版本、安装依赖软件包、从阿里云 OSS 下载安装包。随后详细说明创建安装目录、使用 rpm 命令安装、编辑配置文件的操作步骤。
- 服务管理:利用 nebula.service 脚本管理服务,可进行启动、停止、查看状态等操作,还介绍了启动报错时的解决办法,如参考官方文档、添加 Storage 主机等。
- 工具使用:介绍命令行客户端 nebula-console 和可视化工具 NebulaGraph Studio 的安装、配置及使用方法,包括下载、重命名、授权以及连接 NebulaGraph 的操作,还提及安装 NebulaGraph Studio 时可能遇到的问题及解决办法。
- 优化与问题解决:分享性能优化建议,如调优 JVM 参数、规划分区与副本、部署监控系统等。针对常见问题,如无法启动服务、连接超时、性能瓶颈等,给出检查日志文件、确认防火墙规则、优化查询等解决方案。
注:在实际应用过程中,若遇到更多具体的问题或需要进一步的帮助,请友友们随时查阅官方文档或在 NebulaGraph 社区寻求支持~
相关文章:
轻松上手 —— 通过 RPM 包快速部署 NebulaGraph
前言 在当今大数据时代,处理复杂关系数据的需求与日俱增,图数据库应运而生并逐渐崭露头角。NebulaGraph 作为一款高性能、分布式且易扩展的图数据库,专为应对大规模图数据处理而精心打造。它不仅具备丰富的查询语言,还拥有强大高效…...
每日一题——接雨水
接雨水问题详解 视频学习推荐 建议先参考以下视频进行学习: 问题描述 给定一个非负整数数组 height,表示每个宽度为 1 的柱子的高度图。计算按此排列的柱子,下雨之后能接多少雨水。 示例 示例 1: 输入:height …...
MetaGPT发布的MGX与Devin深度对比
家人们,搞编程的都知道,工具选对了,效率能翻倍!今天必须给大伙唠唠MetaGPT发布的MGX编程助手和Devin编程助手 。 先看MGX,简直是编程界的王炸!它就像一个超神的虚拟开发团队,一堆智能助手分工明…...
网络安全技术整体架构 一个中心三重防护
网络安全技术整体架构:一个中心三重防护 在信息技术飞速发展的今天,网络安全的重要性日益凸显。为了保护信息系统不受各种安全威胁的侵害,网络安全技术整体架构应运而生。本文将详细介绍“一个中心三重防护”的概念,并结合代码示…...
03.06 QT
一、使用QSlider设计一个进度条,并让其通过线程自己动起来 程序代码: <1> Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QThread> #include "mythread.h"QT_BEGIN_NAMESPACE namespace Ui {…...
【YOLOv12改进trick】多尺度大核注意力机制MLKA模块引入YOLOv12,实现多尺度目标检测涨点,含创新点Python代码,方便发论文
🍋改进模块🍋:多尺度大核注意力机制(MLKA) 🍋解决问题🍋:MLKA模块结合多尺度、门控机制和空间注意力,显著增强卷积网络的模型表示能力。 🍋改进优势🍋:超分辨的MLKA模块对小目标和模糊目标涨点很明显 🍋适用场景🍋:小目标检测、模糊目标检测等 🍋思路…...
SpringUI:打造高质量Web交互设计的首选元件库
SpringUI作为一个专为Web设计与开发领域打造的高质量交互元件库,确实为设计师和开发者提供了极大的便利。以下是对SpringUI及其提供的各类元件的详细解读和一些建议: SpringUI概述 SpringUI集合了一系列预制的、高质量的交互组件,旨在帮助设…...
鸿蒙Android4个脚有脚线
效果 min:number122max:number150Row(){Stack(){// 底Text().border({width:2,color:$r(app.color.yellow)}).height(this.max).aspectRatio(1)// 长Text().backgroundColor($r(app.color.white)).height(this.max).width(this.min)// 宽Text().backgroundColor($r(app.color.w…...
夏门大学DeepSeek 手册:从社会大众到高校及企业的全面应用实践研究(附 PDF 下载)
这 3 份手册分别从 DeepSeek 大模型概念、技术与应用实践、DeepSeek 大模型赋能高校教学和科研、DeepSeek 大模型及其企业应用实践-企业人员的大模型宝典几个角度进行全面分析,可以结合着清华、北大系列相互对照着学习。 清华北大推出的 DeepSeek 教程(…...
嵌入式学习第二十三天--网络及TCP
进程通信的方式: 同一主机 传统 system V 不同主机 网络 --- 解决不同主机间 的进程间通信 网络 (通信) //1.物理层面 --- 联通(通路) //卫星 2G 3G 4G 5G 星链 (千帆) //2.逻辑层面 --- 通路(软件) MAC os LINUX …...
策略模式详解:实现灵活多样的支付方式
多支付方式的实现:策略模式详解 策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互换使用。策略模式使得算法可以独立于使用它的客户端变化。本文将通…...
【Java篇】算术如诗,逻辑似梦:Java 编程中的运算符探寻
文章目录 Java 运算符:在计算与逻辑之中追寻编程的哲理1.前言2. 算术运算符2.1 基本四则运算符:加减乘除( - * / %)2.2 除法与取余2.3 增量运算符( --)2.4 自增/自减运算符 3. 关系运算符3.1 关系运算符 4.…...
Docker小游戏 | 使用Docker部署DOS游戏合集
Docker小游戏 | 使用Docker部署DOS游戏合集 前言项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署dos-games网页小游戏下载镜像创建容器检查容器状态检查服务端口检查容器日志安全设置四、访问DOS游戏网页五、进阶玩法下载游戏拷贝…...
【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析
DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…...
双足机器狗开发:Rider - Pi
双足机器狗开发:Rider - Pi https://github.com/YahboomTechnology/Rider-Pi-Robot 项目介绍 Rider - Pi是一款为开发者、教育工作者和机器人爱好者设计的桌面双轮腿式机器人,它基于树莓派CM4核心模块构建,具备多种先进功能和特点: 硬件特性 核心模块:采用树莓派CM4核…...
以商业思维框架为帆,驭创业浪潮前行
创业者踏入商海,如同航海家奔赴未知海域,需有清晰的思维罗盘指引方向。图中“为什么—用什么—怎么做—何人做—投入产出”的商业框架,正是创业者破解商业谜题的密钥,从需求洞察到落地执行,为创业之路铺就逻辑基石。 …...
基于单片机的智慧音乐播放系统研究
标题:基于单片机的智慧音乐播放系统研究 内容:1.摘要 随着科技的飞速发展,人们对音乐播放系统的智能化和个性化需求日益增长。本研究的目的是设计并实现一个基于单片机的智慧音乐播放系统。采用单片机作为核心控制单元,结合音频解码模块、存储模块和人机…...
ApoorvCTF Rust语言逆向实战
上周参加了国外的比赛,名称叫:ApoorvCTF 看一下老外的比赛跟我们有什么不同,然后我根据国内比赛对比发现,他们考点还是很有意思的,反正都是逆向,哈哈哈 Rusty Vault 题目描述: In the h…...
Mysql回表查询、索引覆盖等概念
参考:【mysql】MySQL中的回表查询、索引覆盖、索引下推、谓词下推_mysql回表-CSDN博客 【一】回表查询 【1】索引的存储形式 在InnoDB存储引擎中,根据索引的存储形式,又可以分为以下两种: 分类含义特点聚集索引必须有࿰…...
Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(二):训练与推理
Ubuntu20.04本地配置IsaacLab4 4.2.0的G1训练环境(二):训练与推理 训练推理 写在前面,本文档的实现需要IsaacLab的成功安装,可参考(一)。 训练 在IsaacLab目录下,isaaclab的conda虚…...
《实战AI智能体》深度解析Deepseek可以做什么?
一、Deepseek平台功能全景图 Deepseek作为新一代人工智能开发平台,通过整合多项核心技术能力,构建了覆盖多领域的AI服务体系。该平台不仅为终端用户提供智能化解决方案,更为开发者群体打造了高效的技术支撑平台,形成了完整的AI应用开发生态。 二、核心功能模块解析 2.1 智…...
Android 仿 DeepSeek 思考效果:逐字显示 AI 生成内容,支持加粗、颜色,复制内容
最近特别火的非AI莫属了,对我们高级搬运工太友好了,不管是网页端还是APP端,输入你要问的问题,都会逐字给你显示出来,有的还会加粗,这种效果看着不错,今天就带大家一起来实现。有啥更好的建议请在…...
联合索引关于In和范围查询影响索引使用的情况分析
索引类型 1、unique ,唯一索引 2、normal,普通索引 3、fulltext, 全文索引 4、spatial,空间索引 样例 三个字段的联合索引,走一个字段是key_len是5,三个是15. 联合索引关于 使用in是不影响后续列 范围查询大于或小于…...
八点八数字科技:AI数字人引领智慧文旅新时代
在数字化浪潮席卷全球的今天,八点八数字科技凭借其领先的AI数字人技术,正在为文旅行业带来一场前所未有的变革。作为全球领先的IP智能体服务商,八点八数字科技通过自主研发的AI数字人全息舱、数字人一体机等创新产品,为智慧文旅注…...
python绘图之组合图表
组合图表(也称为多子图或多面板图表)是一种将多个图表组合在一起的可视化方式,主要用于同时展示多个相关的数据集或数据维度。本节我们学习使用python绘制组合图表 import matplotlib.pyplot as plt import numpy as np# 生成随机数据 x np.…...
pytest框架 核心知识的系统复习
1. pytest 介绍 是什么:Python 最流行的单元测试框架之一,支持复杂的功能测试和插件扩展。 优点: 语法简洁(用 assert 替代 self.assertEqual)。 自动发现测试用例。 丰富的插件生态(如失败重试、并发执…...
【人工智能】实现【DeepSeek】使用【Anything LLM】并使用本地知识库回答!本地部署告别服务器崩溃的烦恼!
本地知识库回答不准确(Anything LLM + Ollama ) 很多动手能力强的人根据网上的教程,部署了自己的本地知识库。但是发现知识库回答的不准确,甚至答非所问。 先看部署知识库的对比效果,本地大模型为deepseek1.5b 配置为 Anything LLM + Ollama,知识库内容为两篇手机公司文…...
RV1126+FFMPEG多路码流监控项目
一.项目介绍: 本项目采用的是易百纳RV1126开发板和CMOS摄像头,使用的推流框架是FFMPEG开源项目。这个项目的工作流程如下(如上图):通过采集摄像头的VI模块,再通过硬件编码VENC模块进行H264/H265的编码压缩,并把压缩后的…...
人工智能之数学基础:对线性代数中逆矩阵的思考?
本文重点 逆矩阵是线性代数中的一个重要概念,它在线性方程组、矩阵方程、动态系统、密码学、经济学和金融学以及计算机图形学等领域都有广泛的应用。通过了解逆矩阵的定义、性质、计算方法和应用,我们可以更好地理解和应用线性代数知识,解决各种实际问题。 关于逆矩阵的思…...
计算机网络(1) 网络通信基础,协议介绍,通信框架
网络结构模式 C/S-----客户端和服务器 B/S -----浏览器服务器 MAC地址 每一个网卡都拥有独一无二的48位串行号,也即MAC地址,也叫做物理地址、硬件地址或者是局域网地址 MAC地址表示为12个16进制数 如00-16-EA-AE-3C-40 (每一个数可以用四个…...
