跳转至

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

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

阅读指南Graph

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

  • Graph
  • Graph
  • Graph
  • Graph

编译NebulaGraph源码要求Graph

硬件要求Graph

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

操作系统要求Graph

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

软件要求Graph

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

软件名称 版本 备注
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目录中。

安装编译所需软件Graph

本小节指导您下载和安装NebulaGraph编译时需要的软件。

  1. 安装依赖包。

    - 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
    
  2. 检查主机上的GCC和CMake版本是否正确。版本信息请参见Graph。

    $ g++ --version
    $ cmake --version
    

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

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

      ```bash
      $ git clone https://github.com/vesoft-inc/nebula-common.git
      ```
    
      类似2.0.0版本的NebulaGraph源码存储在特定的分支,您可以使用`--branch`或`-b`选项指定克隆的分支。例如指定2.0.0,命令如下:
    
      ```bash
      $ git clone --branch v2.0.0 https://github.com/vesoft-inc/nebula-common.git
      ```
    

    2. 进入目录nebula-common

      ```bash
      $ cd nebula-common
      ```
    

    3. 执行如下命令安装和启用GCC和CMake。

      ```bash
      // 安装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
    

测试环境运行NebulaGraph要求Graph

硬件要求Graph

类型 要求
CPU架构 x86_64
CPU核数 4
内存 8 GB
硬盘 100 GB,SSD

操作系统要求Graph

当前仅支持在Linux系统中安装NebulaGraph,建议您在测试环境中使用内核版本为3.9及以上版本的Linux系统。

服务架构建议Graph

进程 建议数量
metad(meta数据服务进程) 1
storaged(存储服务进程) ≥1
graphd(查询引擎服务进程) ≥1

例如单机测试环境,您可以在机器上部署1个metad、1个storaged和1个graphd进程。

对于更常见的测试环境,例如三台机器构成的集群,您可以按照如下方案部署NebulaGraph。

机器名称 metad进程数量 storaged进程数量 graphd进程数量
A 1 1 1
B - 1 1
C - 1 1

生产环境运行NebulaGraph要求Graph

硬件要求Graph

类型 要求
CPU架构 x86_64
CPU核数 48
内存 96 GB
硬盘 2 * 900 GB,NVMe SSD

操作系统要求Graph

当前仅支持在Linux系统中安装NebulaGraph,建议您在生产环境中使用内核版本为3.9及以上版本的Linux系统。

您可以通过调整一些内核参数来提高NebulaGraph性能,详情请参见Graph。

服务架构建议Graph

进程 建议数量
metad(meta数据服务进程) 3
storaged(存储服务进程) ≥3
graphd(查询引擎服务进程) ≥3

通常您只需要3个metad进程,每个metad进程会自动创建并维护meta数据的一个副本。

storaged进程的数量不会影响图空间副本的数量。

您可以在一台机器上部署多个进程,例如五台机器构成的集群,您可以按照如下方案部署NebulaGraph。

警告:请不要跨机房部署集群。

机器名称 metad进程数量 storaged进程数量 graphd进程数量
A 1 1 1
B 1 1 1
C 1 1 1
D - 1 1
E - 1 1

NebulaGraph资源要求Graph

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

资源 单位 计算公式 说明
硬盘空间 Bytes 点和边的总数 * 属性的平均字节大小 * 6 * 120% -
内存 Bytes [点和边的总数 * 15 + RocksDB实例数量 * (write_buffer_size * max_write_buffer_number + 块缓存大小)] * 120% write_buffer_sizemax_write_buffer_number是RocksDB内存相关参数,详情请参见Graph。
分区数量 - 集群硬盘数量 * 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)的情况下,可能会降低读取性能。

关于存储设备Graph

NebulaGraph是针对NVMe SSD进行设计和实现的,所有默认参数都是基于SSD设备进行调优。

不推荐使用HDD,因为HDD的IOPS性能差,随机寻道延迟高,可能还会遇到许多其他问题。也不建议使用远端存储设备,例如NAS或SAN。

请使用本地SSD设备。


最后更新: August 20, 2021
Back to top