文档 1.5 版本已不再积极维护,你当前浏览的是一份归档快照。
最新文档请参阅 最新版本。
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 组件:
3.1 下载 tar 包
从 Apache HugeGraph 官方下载页面下载最新版本的 HugeGraph-Store:
1# 用最新版本号替换 {version},例如 1.5.0
2wget https://downloads.apache.org/incubator/hugegraph/{version}/apache-hugegraph-incubating-{version}.tar.gz
3tar zxf apache-hugegraph-incubating-{version}.tar.gz
4cd apache-hugegraph-incubating-{version}/apache-hugegraph-hstore-incubating-{version}
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# apache-hugegraph-incubating-{version}/apache-hugegraph-hstore-incubating-{version}
10# target/apache-hugegraph-incubating-{version}.tar.gz
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 节点修改以下配置:
- 每个节点的
grpc.port(RPC 端口) - 每个节点的
raft.address(Raft 协议端口) - 每个节点的
server.port(REST 端口) - 每个节点的
app.data-path(数据存储路径)
5 启动与停止
5.1 启动 Store
确保 PD 服务已经启动,然后在 Store 安装目录下执行:
1./bin/start-hugegraph-store.sh
启动成功后,可以在 logs/hugegraph-store-server.log 中看到类似以下的日志:
12024-xx-xx 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
7 验证 Store 服务
确认 Store 服务是否正常运行:
1curl http://localhost:8520/actuator/health
如果返回 {"status":"UP"},则表示 Store 服务已成功启动。
此外,可以通过 PD 的 API 查看集群中的 Store 节点状态:
1curl http://localhost:8620/v1/stores
如果Store配置成功,上述接口的响应中应该包含当前节点的状态信息,状态为Up表示节点正常运行,这里只展示了一个节点配置成功的响应,如果三个节点都配置成功并正在运行,响应中storeId列表应该包含三个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/apache-hugegraph-incubating-1.5.0/apache-hugegraph-store-incubating-1.5.0/lib/hg-store-node-1.5.0.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}