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

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

    编译Nebula Graph源码要求

    操作系统要求

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

    软件要求

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

    软件名称版本备注
    glibc2.17及以上执行命令ldd —version检查版本。
    make任意稳定版本-
    m4任意稳定版本-
    git任意稳定版本-
    wget任意稳定版本-
    unzip任意稳定版本-
    xz任意稳定版本-
    readline-devel任意稳定版本-
    ncurses-devel任意稳定版本-
    zlib-devel任意稳定版本-
    gcc7.5.0及以上执行命令gcc -v检查版本。
    gcc-c++任意稳定版本-
    cmake3.9.0及以上执行命令cmake —version检查版本。
    gettext任意稳定版本-
    curl任意稳定版本-
    redhat-lsb-core任意稳定版本-
    libstdc++-static任意稳定版本仅在CentOS 8+、RedHat 8+、Fedora中需要。
    libasan任意稳定版本仅在CentOS 8+、RedHat 8+、Fedora中需要。
    bzip2任意稳定版本-

    其他第三方软件将在安装(cmake)阶段自动下载并安装到build目录中。

    安装编译所需软件

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

    1. 安装依赖包。

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

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

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

        1. $ git clone -b v2.6.1 https://github.com/vesoft-inc/nebula.git

        如需安装特定版本的Nebula Graph,使用--branch-b选项指定相应的nebula-common分支。 例如,指定2.6.1,命令如下:

      1. 进入目录nebula

        1. $ cd nebula
      2. 执行如下命令安装和启用GCC和CMake。

    3. 执行脚本install-third-party.sh

      1. $ ./third-party/install-third-party.sh
    类型要求
    CPU架构x86_64
    CPU核数4
    内存8 GB
    硬盘100 GB,SSD

    操作系统要求

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

    服务架构建议

    例如单机测试环境,用户可以在机器上部署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性能,详情请参见内核配置

    服务架构建议

    Danger

    不要跨机房部署集群。

    有且仅有3个metad进程,每个metad进程会自动创建并维护meta数据的一个副本。

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

    用户可以在一台机器上部署多个不同进程,例如五台机器构成的集群,用户可以按照如下方案部署Nebula Graph。

    机器名称metad进程数量storaged进程数量graphd进程数量
    A111
    B111
    C111
    D-11
    E-11
    资源单位计算公式说明
    硬盘空间Bytes点和边的总数 属性的平均字节大小 6 120%由于边存在存储放大现象,所以需要点和边的总数 6 的空间,详情请参见切边与存储放大
    内存Bytes[点和边的总数 15 + RocksDB实例数量 (write_buffer_size max_write_buffer_number + 块缓存大小)] 120%点和边的总数 15 是需要占用的内存空间,write_buffer_sizemax_write_buffer_number是RocksDB内存相关参数,详情请参见MemTable。块缓存大小请参见。
    分区数量-集群硬盘数量 * disk_partition_num_multiplierdisk_partition_num_multiplier是取值为2~10的一个整数,用于衡量硬盘性能。HDD使用2。
    • 问题 1:为什么磁盘空间和内存都要乘以120%?

      答:额外的20%用于缓冲。

    • 问题 2:如何获取RocksDB实例数量?

      答:在etc目录内查看配置文件nebula-storaged.conf--data_path选项中的每个目录对应一个RocksDB实例,目录总数即是RocksDB实例数量。

    Note

    用户可以在配置文件nebula-storaged.conf中添加来降低bloom过滤器占用的内存大小,但是在某些随机寻道(random-seek)的情况下,可能会降低读取性能。

    FAQ

    关于存储设备

    Nebula Graph 是针对 NVMe SSD 进行设计和实现的,所有默认参数都是基于 SSD 设备进行调优,要求极高的 IOPS 和极低的 Latency。

    • 不建议使用 HDD;因为其 IOPS 性能差,随机寻道延迟高;会遇到大量问题。

    • 不要使用远端存储设备(如 NAS 或 SAN),不要外接基于 HDFS 或者 Ceph 的虚拟硬盘。

    • 不需要使用磁盘阵列(RAID)。

    • 使用本地 SSD 设备。

    关于CPU架构

    Enterpriseonly

    Nebula Graph 2.6.1 不支持直接在 ARM 架构上运行。访问官网获取。


    最后更新: November 4, 2021