准备编译、安装和运行Nebula Graph的环境

本文介绍编译、安装Nebula Graph的要求和建议,以及如何预估集群运行所需的资源。

阅读指南

如果您是带着如下问题阅读本文,可以直接单击问题跳转查看对应的说明。

编译Nebula Graph源码要求

硬件要求

类型要求
CPU架构x86_64
内存4 GB
硬盘10 GB,SSD

操作系统要求

当前仅支持在Linux系统中编译Nebula Graph,建议您使用内核版本为2.6.32及以上版本的Linux系统。

软件要求

您的软件版本需要如下表所示,如果它们不符合要求,或者您也不确定它们的版本,请按照安装编译所需软件中的步骤进行操作。

软件名称版本备注
glibc2.12及以上执行命令ldd —version检查版本。
make任意稳定版本-
m4任意稳定版本-
git任意稳定版本-
wget任意稳定版本-
unzip任意稳定版本-
xz任意稳定版本-
readline-devel任意稳定版本-
ncurses-devel任意稳定版本-
zlib-devel任意稳定版本-
gcc7.1.0及以上执行命令gcc -v检查版本。
gcc-c++任意稳定版本-
cmake3.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编译时需要的软件。

  1. 安装依赖包。

    - CentOS、RedHat、Fedora用户请执行如下命令:

    1. $ yum update
    2. $ yum install -y make \
    3. m4 \
    4. git \
    5. wget \
    6. unzip \
    7. xz \
    8. readline-devel \
    9. ncurses-devel \
    10. zlib-devel \
    11. gcc \
    12. gcc-c++ \
    13. cmake \
    14. gettext \
    15. curl \
    16. redhat-lsb-core
    17. // 仅CentOS 8+、RedHat 8+、Fedora需要安装libstdc++-static和libasan。
    18. $ yum install -y libstdc++-static libasan

    - Debian和Ubuntu用户请执行如下命令:

    1. $ apt-get update
    2. $ apt-get install -y make \
    3. m4 \
    4. git \
    5. wget \
    6. unzip \
    7. xz-utils \
    8. curl \
    9. lsb-core \
    10. build-essential \
    11. libreadline-dev \
    12. ncurses-dev \
    13. cmake \
    14. gettext
  2. 检查主机上的GCC和CMake版本是否正确。版本信息请参见软件要求

    1. $ g++ --version
    2. $ cmake --version

    如果版本正确,您可以跳过本小节。如果不正确,请根据如下步骤安装:

    1. 克隆仓库nebula-common到主机。

    1. ```bash
    2. $ git clone https://github.com/vesoft-inc/nebula-common.git

    类似2.0.0版本的Nebula Graph源码存储在特定的分支,您可以使用--branch-b选项指定克隆的分支。例如指定2.0.0,命令如下:

    1. $ git clone --branch v2.0.0 https://github.com/vesoft-inc/nebula-common.git
    1. 2\. 进入目录`nebula-common`
    1. $ cd nebula-common
    1. 3\. 执行如下命令安装和启用GCCCMake
    1. // 安装CMake
    2. $ ./third-party/install-cmake.sh cmake-install
    3. // 启用CMake
    4. $ source cmake-install/bin/enable-cmake.sh
    5. // 安装GCC。安装到opt目录需要root权限,您也可以修改为其他目录。
    6. $ sudo ./third-party/install-gcc.sh --prefix=/opt
    7. // 启用GCC
    8. $ 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进程数量
A111
B-11
C-11

生产环境运行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进程数量
A111
B111
C111
D-11
E-11

Nebula Graph资源要求

您可以预估一个3副本Nebula Graph集群所需的内存、硬盘空间和分区数量。

资源单位计算公式说明
硬盘空间Bytes点和边的总数 属性的平均字节大小 6 120%-
内存Bytes[点和边的总数 15 + RocksDB实例数量 (write_buffer_size max_write_buffer_number + 块缓存大小)] 120%write_buffer_sizemax_write_buffer_number是RocksDB内存相关参数,详情请参见MemTable。块缓存大小请参见Memory usage in RocksDB
分区数量-集群硬盘数量 disk_partition_num_multiplierdisk_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设备。