前言
在当今大数据时代,处理复杂关系数据的需求与日俱增,图数据库应运而生并逐渐崭露头角。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 -c
8 Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
[root@instance2 ~]# free -h
total 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 Databasehttps://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 Databasehttps://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 nebula
Welcome!
(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 nebula
Welcome!
(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 参数、规划分区与副本、部署监控系统等。针对常见问题,如无法启动服务、连接超时、性能瓶颈等,给出检查日志文件、确认防火墙规则、优化查询等解决方案。