跳转到主要内容

文档 1.7 版本已不再积极维护,你当前浏览的是一份归档快照。 最新文档请参阅 最新版本。

HugeGraph-Store Quick Start

1 HugeGraph-Store 概述

HugeGraph-Store 是 HugeGraph 分布式版本的存储节点组件,负责实际存储和管理图数据。它与 HugeGraph-PD 协同工作,共同构成 HugeGraph 的分布式存储引擎,提供高可用性和水平扩展能力。

2 依赖

2.1 前置条件

  • 操作系统:Linux 或 macOS(Windows 尚未经过完整测试)
  • Java 版本:≥ 11
  • Maven 版本:≥ 3.5.0
  • 如需进行多节点部署,请先部署 HugeGraph-PD

3 部署

有两种方式可以部署 HugeGraph-Store 组件:

  • 方式 1:下载 tar 包
  • 方式 2:源码编译

3.1 下载 tar 包

从 Apache HugeGraph 官方下载页面下载最新版本的 HugeGraph-Store:

1# 1.7.0 是项目孵化期发布的历史版本,因此文件名和目录名仍带 incubating
2wget https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz
3tar zxf apache-hugegraph-incubating-1.7.0.tar.gz
4cd apache-hugegraph-incubating-1.7.0/apache-hugegraph-hstore-incubating-1.7.0

3.2 源码编译

 1# 1. 克隆源代码
 2git clone https://github.com/apache/hugegraph.git
 3
 4# 2. 编译项目
 5cd hugegraph
 6mvn clean install -DskipTests=true
 7
 8# 3. 编译成功后,Store 目录和完整发布包分别位于
 9#    hugegraph-store/apache-hugegraph-store-{version}
10#    target/apache-hugegraph-{version}.tar.gz

3.3 Docker 部署

HugeGraph-Store Docker 镜像已发布在 Docker Hub,镜像名是 hugegraph/store。

注: 后续步骤皆假设你本地已拉取 hugegraph 主仓库代码 (至少是 docker 目录)

使用 docker-compose 文件部署完整的 3 节点集群(PD + Store + Server):

1cd hugegraph/docker
2# 注意版本号请随时保持更新 → 1.x.0
3HUGEGRAPH_VERSION=1.7.0 docker compose -f docker-compose-3pd-3store-3server.yml up -d

通过 docker run 运行单个 Store 节点:

 1docker run -d \
 2  -p 8520:8520 \
 3  -p 8500:8500 \
 4  -p 8510:8510 \
 5  -e HG_STORE_PD_ADDRESS=<pd-ip>:8686 \
 6  -e HG_STORE_GRPC_HOST=<your-ip> \
 7  -e HG_STORE_RAFT_ADDRESS=<your-ip>:8510 \
 8  -v /path/to/storage:/hugegraph-store/storage \
 9  --name hugegraph-store \
10  hugegraph/store:1.7.0

环境变量参考:

变量必填默认值描述
HG_STORE_PD_ADDRESS是—PD gRPC 地址(如 pd0:8686,pd1:8686,pd2:8686)
HG_STORE_GRPC_HOST是—本节点的 gRPC 主机名/IP(如 store0)
HG_STORE_RAFT_ADDRESS是—本节点的 Raft 地址(如 store0:8510)
HG_STORE_GRPC_PORT否8500gRPC 服务端口
HG_STORE_REST_PORT否8520REST API 端口
HG_STORE_DATA_PATH否/hugegraph-store/storage数据存储路径

注意:在 Docker 桥接网络中,HG_STORE_GRPC_HOST 应使用容器主机名(如 store0)而非 IP 地址。

已弃用的别名:PD_ADDRESS、GRPC_HOST、RAFT_ADDRESS 仍可使用,但会输出弃用警告。新部署请使用 HG_STORE_* 名称。

4 配置

Store 的主要配置文件为 conf/application.yml,以下是关键配置项:

 1pdserver:
 2  # PD 服务地址,多个 PD 地址用逗号分割(配置 PD 的 gRPC 端口)
 3  address: 127.0.0.1:8686
 4
 5grpc:
 6  # gRPC 的服务地址
 7  host: 127.0.0.1
 8  port: 8500
 9  netty-server:
10    max-inbound-message-size: 1000MB
11
12raft:
13  # raft 缓存队列大小
14  disruptorBufferSize: 1024
15  address: 127.0.0.1:8510
16  max-log-file-size: 600000000000
17  # 快照生成时间间隔,单位秒
18  snapshotInterval: 1800
19
20server:
21  # REST 服务地址
22  port: 8520
23
24app:
25  # 存储路径,支持多个路径,逗号分割
26  data-path: ./storage
27  #raft-path: ./storage
28
29spring:
30  application:
31    name: store-node-grpc-server
32  profiles:
33    active: default
34    include: pd
35
36logging:
37  config: 'file:./conf/log4j2.xml'
38  level:
39    root: info

对于多节点部署,需要为每个 Store 节点修改以下配置:

  1. 每个节点的 grpc.port(RPC 端口)
  2. 每个节点的 raft.address(Raft 协议端口)
  3. 每个节点的 server.port(REST 端口)
  4. 每个节点的 app.data-path(数据存储路径)

5 启动与停止

5.1 启动 Store

确保 PD 服务已经启动,然后在 Store 安装目录下执行:

1./bin/start-hugegraph-store.sh

启动脚本支持 -d 参数控制守护进程模式:

  • -d true(默认):以后台守护进程方式运行,脚本立即返回。
  • -d false:以前台模式运行——脚本通过 exec 替换为 Java 进程,容器/进程管理器的进程即为 Java 本身。在 Docker 或进程管理器(systemd、supervisord)下运行时请使用此参数,以便在崩溃时自动检测并重启服务。

启动成功后,可以在 logs/hugegraph-store-server.log 中看到类似以下的日志:

1YYYY-mm-dd xx:xx:xx [main] [INFO] o.a.h.s.n.StoreNodeApplication - Started StoreNodeApplication in x.xxx seconds (JVM running for x.xxx)

5.2 停止 Store

在 Store 安装目录下执行:

1./bin/stop-hugegraph-store.sh

6 多节点部署示例

以下是一个三节点部署的配置示例:

6.1 三节点配置参考

  • 3 PD 节点
    • raft 端口:8610, 8611, 8612
    • rpc 端口:8686, 8687, 8688
    • rest 端口:8620, 8621, 8622
  • 3 Store 节点
    • raft 端口:8510, 8511, 8512
    • rpc 端口:8500, 8501, 8502
    • rest 端口:8520, 8521, 8522

6.2 Store 节点配置

对于三个 Store 节点,每个节点的主要配置差异如下:

节点 A:

1grpc:
2  port: 8500
3raft:
4  address: 127.0.0.1:8510
5server:
6  port: 8520
7app:
8  data-path: ./storage-a

节点 B:

1grpc:
2  port: 8501
3raft:
4  address: 127.0.0.1:8511
5server:
6  port: 8521
7app:
8  data-path: ./storage-b

节点 C:

1grpc:
2  port: 8502
3raft:
4  address: 127.0.0.1:8512
5server:
6  port: 8522
7app:
8  data-path: ./storage-c

所有节点都应该指向相同的 PD 集群:

1pdserver:
2  address: 127.0.0.1:8686,127.0.0.1:8687,127.0.0.1:8688

6.3 Docker 分布式集群配置

3 节点 Store 集群包含在 docker/docker-compose-3pd-3store-3server.yml 中。每个 Store 节点拥有独立的主机名和环境变量:

 1# store0
 2HG_STORE_PD_ADDRESS: pd0:8686,pd1:8686,pd2:8686
 3HG_STORE_GRPC_HOST: store0
 4HG_STORE_GRPC_PORT: "8500"
 5HG_STORE_REST_PORT: "8520"
 6HG_STORE_RAFT_ADDRESS: store0:8510
 7HG_STORE_DATA_PATH: /hugegraph-store/storage
 8
 9# store1
10HG_STORE_PD_ADDRESS: pd0:8686,pd1:8686,pd2:8686
11HG_STORE_GRPC_HOST: store1
12HG_STORE_RAFT_ADDRESS: store1:8510
13
14# store2
15HG_STORE_PD_ADDRESS: pd0:8686,pd1:8686,pd2:8686
16HG_STORE_GRPC_HOST: store2
17HG_STORE_RAFT_ADDRESS: store2:8510

Store 节点仅在所有 PD 节点通过健康检查后才会启动,其中 docker-compose 中的 healthcheck 实际访问的是 PD 的 REST 接口 /v1/health(也可以通过 Actuator 暴露的 /actuator/health 进行手动检查),并通过 depends_on: condition: service_healthy 强制执行依赖关系。

运行时日志可通过 docker logs <container-name>(如 docker logs hg-store0)直接查看,无需进入容器。

完整的部署指南请参阅 docker/README.md。

7 验证 Store 服务

确认 Store 服务是否正常运行:

1curl http://localhost:8520/actuator/health

如果返回 {"status":"UP"},则表示 Store 服务已成功启动。

也可以通过 PD API 查看集群中的 Store 节点状态:

1curl http://localhost:8620/v1/stores

如果 Store 配置成功,上述接口响应中应包含当前节点的状态信息,其中 state 为 Up 表示节点运行正常。

下方示例仅展示 1 个 Store 节点的返回结果。如果 3 个节点都已正确配置并正在运行,则响应中的 storeId 列表应包含 3 个 ID,且 stateCountMap.Up、numOfService 和 numOfNormalService 都应为 3。

 1{
 2  "message": "OK",
 3  "data": {
 4    "stores": [
 5      {
 6        "storeId": 8319292642220586694,
 7        "address": "127.0.0.1:8500",
 8        "raftAddress": "127.0.0.1:8510",
 9        "version": "",
10        "state": "Up",
11        "deployPath": "/Users/{your_user_name}/hugegraph/hugegraph-store/apache-hugegraph-store-{version}/lib/hg-store-node-{version}.jar",
12        "dataPath": "./storage",
13        "startTimeStamp": 1754027127969,
14        "registedTimeStamp": 1754027127969,
15        "lastHeartBeat": 1754027909444,
16        "capacity": 494384795648,
17        "available": 346535829504,
18        "partitionCount": 0,
19        "graphSize": 0,
20        "keyCount": 0,
21        "leaderCount": 0,
22        "serviceName": "127.0.0.1:8500-store",
23        "serviceVersion": "",
24        "serviceCreatedTimeStamp": 1754027127000,
25        "partitions": []
26      }
27    ],
28    "stateCountMap": {
29      "Up": 1
30    },
31    "numOfService": 1,
32    "numOfNormalService": 1
33  },
34  "status": 0
35}