准备编译、安装和运行Nebula Graph的环境
本文介绍编译、安装Nebula Graph的要求和建议,以及如何预估集群运行所需的资源。
阅读指南
如果您是带着如下问题阅读本文,可以直接单击问题跳转查看对应的说明。
编译Nebula Graph源码要求
硬件要求
类型 | 要求 |
---|---|
CPU架构 | x86_64 |
内存 | 4 GB |
硬盘 | 10 GB,SSD |
操作系统要求
当前仅支持在Linux系统中编译Nebula Graph,建议您使用内核版本为2.6.32
及以上版本的Linux系统。
软件要求
您的软件版本需要如下表所示,如果它们不符合要求,或者您也不确定它们的版本,请按照安装编译所需软件中的步骤进行操作。
软件名称 | 版本 | 备注 |
---|---|---|
glibc | 2.12及以上 | 执行命令ldd —version 检查版本。 |
make | 任意稳定版本 | - |
m4 | 任意稳定版本 | - |
git | 任意稳定版本 | - |
wget | 任意稳定版本 | - |
unzip | 任意稳定版本 | - |
xz | 任意稳定版本 | - |
readline-devel | 任意稳定版本 | - |
ncurses-devel | 任意稳定版本 | - |
zlib-devel | 任意稳定版本 | - |
gcc | 7.1.0及以上 | 执行命令gcc -v 检查版本。 |
gcc-c++ | 任意稳定版本 | - |
cmake | 3.5.0及以上 | 执行命令cmake —version 检查版本。 |
gettext | 任意稳定版本 | - |
curl | 任意稳定版本 | - |
redhat-lsb-core | 任意稳定版本 | - |
libstdc++-static | 任意稳定版本 | 仅在CentOS 8+、RedHat 8+、Fedora中需要。 |
libasan | 任意稳定版本 | 仅在CentOS 8+、RedHat 8+、Fedora中需要。 |
其他第三方软件将在安装(cmake)阶段自动下载并安装到build
目录中。
安装编译所需软件
本小节指导您下载和安装Nebula Graph编译时需要的软件。
安装依赖包。
- CentOS、RedHat、Fedora用户请执行如下命令:
$ yum update
$ yum install -y make \
m4 \
git \
wget \
unzip \
xz \
readline-devel \
ncurses-devel \
zlib-devel \
gcc \
gcc-c++ \
cmake \
gettext \
curl \
redhat-lsb-core
// 仅CentOS 8+、RedHat 8+、Fedora需要安装libstdc++-static和libasan。
$ yum install -y libstdc++-static libasan
- Debian和Ubuntu用户请执行如下命令:
$ apt-get update
$ apt-get install -y make \
m4 \
git \
wget \
unzip \
xz-utils \
curl \
lsb-core \
build-essential \
libreadline-dev \
ncurses-dev \
cmake \
gettext
检查主机上的GCC和CMake版本是否正确。版本信息请参见软件要求。
$ g++ --version
$ cmake --version
如果版本正确,您可以跳过本小节。如果不正确,请根据如下步骤安装:
1. 克隆仓库
nebula-common
到主机。```bash
$ git clone https://github.com/vesoft-inc/nebula-common.git
类似2.0.0版本的Nebula Graph源码存储在特定的分支,您可以使用
--branch
或-b
选项指定克隆的分支。例如指定2.0.0,命令如下:$ git clone --branch v2.0.0 https://github.com/vesoft-inc/nebula-common.git
2\. 进入目录`nebula-common`。
$ cd nebula-common
3\. 执行如下命令安装和启用GCC和CMake。
// 安装CMake。
$ ./third-party/install-cmake.sh cmake-install
// 启用CMake。
$ source cmake-install/bin/enable-cmake.sh
// 安装GCC。安装到opt目录需要root权限,您也可以修改为其他目录。
$ sudo ./third-party/install-gcc.sh --prefix=/opt
// 启用GCC。
$ source /opt/vesoft/toolset/gcc/7.5.0/enable
测试环境运行Nebula Graph要求
硬件要求
类型 | 要求 |
---|---|
CPU架构 | x86_64 |
CPU核数 | 4 |
内存 | 8 GB |
硬盘 | 100 GB,SSD |
操作系统要求
当前仅支持在Linux系统中安装Nebula Graph,建议您在测试环境中使用内核版本为3.9
及以上版本的Linux系统。
服务架构建议
进程 | 建议数量 |
---|---|
metad(meta数据服务进程) | 1 |
storaged(存储服务进程) | ≥1 |
graphd(查询引擎服务进程) | ≥1 |
例如单机测试环境,您可以在机器上部署1个metad、1个storaged和1个graphd进程。
对于更常见的测试环境,例如三台机器构成的集群,您可以按照如下方案部署Nebula Graph。
机器名称 | metad进程数量 | storaged进程数量 | graphd进程数量 |
---|---|---|---|
A | 1 | 1 | 1 |
B | - | 1 | 1 |
C | - | 1 | 1 |
生产环境运行Nebula Graph要求
硬件要求
类型 | 要求 |
---|---|
CPU架构 | x86_64 |
CPU核数 | 48 |
内存 | 96 GB |
硬盘 | 2 * 900 GB,NVMe SSD |
操作系统要求
当前仅支持在Linux系统中安装Nebula Graph,建议您在生产环境中使用内核版本为3.9
及以上版本的Linux系统。
您可以通过调整一些内核参数来提高Nebula Graph性能,详情请参见内核配置。
服务架构建议
进程 | 建议数量 |
---|---|
metad(meta数据服务进程) | 3 |
storaged(存储服务进程) | ≥3 |
graphd(查询引擎服务进程) | ≥3 |
通常您只需要3个metad进程,每个metad进程会自动创建并维护meta数据的一个副本。
storaged进程的数量不会影响图空间副本的数量。
您可以在一台机器上部署多个进程,例如五台机器构成的集群,您可以按照如下方案部署Nebula Graph。
警告:请不要跨机房部署集群。
机器名称 | metad进程数量 | storaged进程数量 | graphd进程数量 |
---|---|---|---|
A | 1 | 1 | 1 |
B | 1 | 1 | 1 |
C | 1 | 1 | 1 |
D | - | 1 | 1 |
E | - | 1 | 1 |
Nebula Graph资源要求
您可以预估一个3副本Nebula Graph集群所需的内存、硬盘空间和分区数量。
资源 | 单位 | 计算公式 | 说明 |
---|---|---|---|
硬盘空间 | Bytes | 点和边的总数 属性的平均字节大小 6 120% | - |
内存 | Bytes | [点和边的总数 15 + RocksDB实例数量 (write_buffer_size max_write_buffer_number + 块缓存大小 )] 120% | write_buffer_size 和max_write_buffer_number 是RocksDB内存相关参数,详情请参见MemTable。块缓存大小请参见Memory usage in RocksDB。 |
分区数量 | - | 集群硬盘数量 disk_partition_num_multiplier | disk_partition_num_multiplier 是取值为2~10的一个整数,用于衡量硬盘性能。HDD使用2。 |
问题 1:为什么磁盘空间和内存都要乘以120%?
答:额外的20%用于缓冲。
问题 2:如何获取RocksDB实例数量?
答:在
etc
目录内查看配置文件nebula-storaged.conf
,--data_path
选项中的每个目录对应一个RocksDB实例,目录总数即是RocksDB实例数量。说明:您可以在配置文件
nebula-storaged.conf
中添加--enable_partitioned_index_filter=true
来降低bloom过滤器占用的内存大小,但是在某些随机寻道(random-seek)的情况下,可能会降低读取性能。
关于存储设备
Nebula Graph是针对NVMe SSD进行设计和实现的,所有默认参数都是基于SSD设备进行调优。
不推荐使用HDD,因为HDD的IOPS性能差,随机寻道延迟高,可能还会遇到许多其他问题。也不建议使用远端存储设备,例如NAS或SAN。
请使用本地SSD设备。