diff --git a/docs-2.0/20.appendix/6.eco-tool-version.md b/docs-2.0/20.appendix/6.eco-tool-version.md index 3694efc05f..14f2916aba 100644 --- a/docs-2.0/20.appendix/6.eco-tool-version.md +++ b/docs-2.0/20.appendix/6.eco-tool-version.md @@ -123,6 +123,14 @@ Nebula Algorithm(简称 Algorithm)是一款基于 [GraphX](https://spark.apa |:---|:---| | {{ nebula.release }} | {{algorithm.release}}(2c61ca5) | +## Nebula Plato + +Nebula Plato 是一款集成了开源高性能图计算框架 Plato 的应用程序,支持利用 Plato 对 Nebula Graph 数据库中的数据执行图计算。详情请参见[什么是 Nebula Plato](../nebula-plato.md)。 + +|Nebula Graph 版本|Plato 版本(commit id)| +|:---|:---| +| {{ nebula.release }} | {{plato.release}}(d895634) | + ## Nebula Console Nebula Console 是 Nebula Graph 的原生 CLI 客户端。如何使用请参见[连接 Nebula Graph](../2.quick-start/3.connect-to-nebula-graph.md)。 diff --git a/docs-2.0/nebula-plato.md b/docs-2.0/nebula-plato.md new file mode 100644 index 0000000000..6f3612a1c0 --- /dev/null +++ b/docs-2.0/nebula-plato.md @@ -0,0 +1,230 @@ +# Nebula Plato + +[Nebula Plato](https://github.com/vesoft-inc/nebula-algorithm) 是一款集成了开源高性能图计算框架 [Plato](https://github.com/tencent/plato) 的应用程序,支持利用 Plato 对 Nebula Graph 数据库中的数据执行图计算。 + +!!! enterpriseonly + + 仅企业版支持本功能。 + +## 适用场景 + +支持将数据源为 Nebula Graph 集群、HDFS 上的 CSV 文件或本地 CSV 文件中的数据导入 Nebula Plato,并将图计算结果输出至 Nebula Graph 集群、HDFS 上的 CSV 文件或本地 CSV 文件。 + +## 使用限制 + +输入和输出均为 Nebula Graph 集群时,图计算结果只能输出到数据源所在的图空间。 + +## 版本兼容性 + +Nebula Plato 版本和 Nebula Graph 内核的版本对应关系如下。 + +|Plato client 版本|Nebula Graph 版本| +|:---|:---| +|{{plato.release}}|{{nebula.release}}| + +## 支持算法 + +Nebula Plato 支持的图计算算法如下。 + +| 算法名 |说明 |分类 | +|:----------------------|:----------------|:-----------| +| APSP | 全图最短路径 | 路径 | +| SSSP | 单源最短路径 | 路径 | +| BFS | 广度优先遍历 | 路径 | +| PageRank | 页面排序 | 节点重要度 | +| KCore | K核 | 节点重要度 | +| DegreeCentrality | 度中心性 | 节点重要度 | +| TriangleCount | 三角计数 | 图特征 | +| LPA | 标签传播 | 社区发现 | +| WCC | 联通分量 | 社区发现 | +| LOUVAIN | 社区发现 | 社区发现 | +| HANP | 跳衰减和节点偏好 | 社区发现 | +| Clustering Coefficient| 聚集系数 | 聚类 | + +## 安装 Nebula Plato + +在多个机器安装多个 Nebula Plato 服务构成集群时,需要安装路径相同,并设置节点间 SSH 免密登录。 + +### RPM包安装 + +```bash +sudo rpm -i nebula-plato-1.0-centos.x86_64.rpm --prefix /home/xxx/nebula-plato +``` + +### 编译安装 + +编译安装 Nebula Plato 的准备工作和编译 Nebula Graph 类似,详情参见[准备资源](4.deployment-and-installation/1.resource-preparations.md)。 + +1. 克隆仓库`plato`。 + + ```bash + $ git clone -b {{plato.branch}} https://github.com/vesoft-inc/plato.t + ``` + +2. 进入目录`plato`。 + + ```bash + $ cd plato + ``` + +3. 执行脚本安装编译依赖。 + + ```bash + $ sudo ./docker/install-dependencies.sh + ``` + +4. 下载并编译静态链接库。 + + ```bash + $ ./3rdtools.sh distclean && ./3rdtools.sh install + ``` + +5. 编译 Nebula Plato。 + + ```bash + $ ./build.sh + ``` + +## 使用方法 + +安装完成后,用户可以设置不同算法的参数,然后执行脚本,即可获得算法的结果,并导出为指定格式。 + +1. 选择 Nebula Plato 集群的任一节点,进入目录`scripts`。 + + ```bash + $ cd scripts + ``` + +2. 确认数据源和输出路径。配置方法如下: + + - 数据源为 Nebula Graph 集群 + + 1. 修改配置文件`nebula.conf`,设置 Nebula Graph 集群相关信息。 + + ```bash + # 连接 Nebula Graph 时的重试次数。 + --retry=3 + # 要读取或写入的图空间名称。 + --space=baskeyballplayer + + # 读取 Nebula Graph 设置 + # Nebula Graph 的 metad 服务地址。 + --meta_server_addrs=192.168.8.100:9559, 192.168.8.101:9559, 192.168.8.102:9559 + # 要读取的边的名称。 + --edges=LIKES + # 要读取的作为边的权重属性的名称。可以是属性名,也可以是 _rank。 + #--edge_data_fields + # 每次扫描读取的行数。 + --read_batch_size=10000 + + # 写回 Nebula Graph 设置 + # Nebula Graph 的 graphd 服务地址。 + --graph_server_addrs=192.168.8.100:9669 + # Nebula Graph 的登录用户名。 + --user=root + # Nebula Graph 的登录密码。 + --password=nebula + # 写回 Nebula Graph 时采用的模式: insert 和 update。 + --mode=insert + # 写回到 Nebula Graph 的 Tag 名称。 + --tag=pagerank + # 写回到 Nebula Graph 的 Tag 对应的属性名称。 + --prop=pr + # 写回到 Nebula Graph 的 Tag 对应的属性的类型。 + --type=double + # 写回时,每次写入的行数。 + --write_batch_size=1000 + # 写回失败的数据所存储的文件。 + --err_file=/home/jie.wang/plato/err.txt + ``` + + 2. 修改需要使用的算法脚本,例如`run_pagerank.sh`,设置相关参数。 + + ```bash + # 集群所有机器所运行的进程数之和,推荐每台机器为 1 或者 NUMA 架构的 node 数。 + WNUM=3 + # 每个进程的线程数,推荐最大设置为机器的硬件线程数。 + WCORES=4 + # 数据源路径 + # 可以通过文件 nebula.conf 设置从 Nebula Graph 读取: + INPUT=${INPUT:="nebula:$PROJECT/scripts/nebula.conf"} + # 也可以通过本地或 HDFS 上的 CSV 文件读取: + # #INPUT=${INPUT:="$PROJECT/data/graph/v100_e2150_ua_c3.csv"} + + # 图计算结果输出路径 + # 可以输出至 Nebula Graph 集群,如果数据源也为 Nebula Graph,结果会输出至 nebula.conf 指定的图空间。 + OUTPUT=${OUTPUT:="nebula:$PROJECT/scripts/nebula.conf"} + # 也可以输出至本地或 HDFS 上的 CSV 文件: + # OUTPUT=${OUTPUT:='hdfs://192.168.8.100:9000/_test/output'} + + # true 为有向图,false 为无向图。 + IS_DIRECTED=${IS_DIRECTED:=true} + # 是否进行 ID 编码 + NEED_ENCODE=${NEED_ENCODE:=true} + # 数据源的点 ID 类型,例如:string、int32、int64。 + VTYPE=${VTYPE:=int32} + # 编码类型。distributed 为分布式点ID编码,single 为单机点 ID 编码。 + ENCODER=${ENCODER:="distributed"} + # PageRank 算法的参数。不同算法的参数不同。 + EPS=${EPS:=0.0001} + DAMPING=${DAMPING:=0.85} + # 迭代次数 + ITERATIONS=${ITERATIONS:=100} + ``` + + - 数据源为本地或 HDFS 上的 CSV 文件 + + 修改需要使用的算法脚本,例如`run_pagerank.sh`,设置相关参数。 + + ```bash + # 集群所有机器所运行的进程数之和,推荐每台机器为 1 或者 NUMA 架构的 node 数。 + WNUM=3 + # 每个进程的线程数,推荐最大设置为机器的硬件线程数。 + WCORES=4 + # 数据源路径 + # 可以通过文件 nebula.conf 设置从 Nebula Graph 读取: + # INPUT=${INPUT:="nebula:$PROJECT/scripts/nebula.conf"} + # 也可以通过本地或 HDFS 上的 CSV 文件读取: + INPUT=${INPUT:="$PROJECT/data/graph/v100_e2150_ua_c3.csv"} + + # 图计算结果输出路径 + # 可以输出至 Nebula Graph 集群,如果数据源也为 Nebula Graph,结果会输出至 nebula.conf 指定的图空间。 + # OUTPUT=${OUTPUT:="nebula:$PROJECT/scripts/nebula.conf"} + # 也可以输出至本地或 HDFS 上的 CSV 文件: + OUTPUT=${OUTPUT:='hdfs://192.168.8.100:9000/_test/output'} + + # true 为有向图,false 为无向图。 + IS_DIRECTED=${IS_DIRECTED:=true} + # 是否进行 ID 编码 + NEED_ENCODE=${NEED_ENCODE:=true} + # 数据源的点 ID 类型,例如:string、int32、int64。 + VTYPE=${VTYPE:=int32} + # 编码类型。distributed 为分布式点ID编码,single 为单机点 ID 编码。 + ENCODER=${ENCODER:="distributed"} + # PageRank 算法的参数。不同算法的参数不同。 + EPS=${EPS:=0.0001} + DAMPING=${DAMPING:=0.85} + # 迭代次数 + ITERATIONS=${ITERATIONS:=100} + ``` + +3. 修改配置文件`cluster`,设置执行算法的 Nebula Plato 集群节点和任务分配权重。 + + ```bash + # Nebula Plato 集群节点 IP 地址:任务分配权重 + 192.168.8.200:1 + 192.168.8.201:1 + 192.168.8.202:1 + ``` + +4. 执行算法脚本。例如: + + ```bash + ./run_pagerank.sh + ``` + +5. 在输出路径查看计算结果。 + + - 输出至 Nebula Graph 集群,请根据`nebula.conf`的设置查看计算结果。 + + - 输出至 HDFS 上的 CSV 文件或本地 CSV 文件,请根据图计算脚本内的`OUTPUT`设置查看计算结果,计算结果为`.gz`格式的压缩文件。 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index ffc81c39d3..22d717d4ca 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -75,6 +75,9 @@ extra: algorithm: release: 2.5.1 branch: v2.5 + plato: + release: 1.0.0 + branch: v1.0.0 sparkconnector: release: 2.6.1 branch: v2.6 @@ -477,6 +480,8 @@ nav: - Nebula Algorithm: nebula-algorithm.md + - Nebula Plato: nebula-plato.md + - Nebula Spark Connector: nebula-spark-connector.md - Nebula Flink Connector: nebula-flink-connector.md