运行配置要求
生产环境
生产环境部署方式
- 3 个元数据服务进程
metad
- 至少 3 个存储服务进程
storaged
- 至少 3 个查询引擎服务进程
graphd
以上进程都无需独占机器。例如一个由 5 台机器组成的集群:A、B、C、D、E,可以如下部署:
- A:metad, storaged, graphd
- B:metad, storaged, graphd
- C:metad, storaged, graphd
- D:storaged, graphd
- E:storaged, graphd
同一个集群不要跨机房部署。 metad 每个进程都会创建一份元数据的存储副本,因此通常只需 3 个进程。storaged 进程数量不影响图空间数据的副本数量。
服务器配置要求(标准配置)
以 AWS EC2 c5d.12xlarge 为例:
- 处理器:48 core
- 内存:96 GB
- 存储:2 * 900 GB, NVMe SSD
- Linux 内核:3.9 或更高版本,通过命令
uname -r
查看 - glibc:2.12 或更高版本,通过命令
ldd --version
查看
操作系统配置见这里。
测试环境
- 1 个元数据服务进程
metad
- 至少 1 个存储服务进程
storaged
- 至少 1 个查询引擎服务进程
graphd
例如一个有 3 台机器的集群:A、B、C 可以如下部署:
- A:metad、storaged、graphd
- B:storaged、graphd
- C:storaged、graphd
服务器配置要求(最低配置)
以 AWS EC2 c5d.xlarge 为例:
- 处理器:4 core
- 内存:8 GB
- 存储:100 GB, SSD
资源估算(3副本标准配置)
- 存储空间(全集群):点和边数量 * 平均属性的字节数 * 6
- 内存(全集群):点边数量 * 15 字节 + RocksDB 实例数量 * (write_buffer_size * max_write_buffer_number) + rocksdb_block_cache, 其中
etc/nebula-storaged.conf
文件中--data_path
项中的每个目录对应一个 RocksDB 实例。也可以通过设置enable_partitioned_index_filter=true
减少 bloomfitler 的内存占用。 - 图空间 partition 数量:全集群硬盘数量 * (2 至 10 —— 硬盘越好该值越大)
- 内存和硬盘另预留 20% buffer。
关于机械硬盘和千兆网络
Nebula Graph 设计时主要针对的硬件设备是 NVMe SSD 和万兆网。没有对于机械磁盘和千兆网络做过适配,以下是一些需调整的参数:
- etc/nebula-storage.conf:
- --raft_rpc_timeout_ms= 5000 至 10000
- --rocksdb_batch_size= 4096 至 16384
- --heartbeat_interval_secs = 30 至 60
- --raft_heartbeat_interval_secs = 30 至 60
- etc/nebula-meta.conf:
- --heartbeat_interval_secs 与 etc/nebula-storage.conf 该项相同
- Spark Writer:
rate: {
timeout: 5000 至 10000
}
- go-importer:
- batchSize: 10 至 50
- concurrency: 1 至 10
- channelBufferSize:100 至 500
- partition 值为全集群硬盘数量 2 倍