文档 1.5 版本已不再积极维护,你当前浏览的是一份归档快照。
最新文档请参阅 最新版本 。
HugeGraph-Computer Quick Start 1 HugeGraph-Computer 概述 HugeGraph-Computer 是分布式图处理系统 (OLAP). 它是 Pregel 的一个实现。它可以运行在 Kubernetes(K8s)/Yarn 上。(它侧重可支持百亿~千亿的图数据量下进行图计算, 会使用磁盘进行排序和加速, 这是它和 Vermeer 相对最大的区别之一)
特性 支持分布式 MPP 图计算,集成 HugeGraph 作为图输入输出存储。 算法基于 BSP(Bulk Synchronous Parallel) 模型,通过多次并行迭代进行计算,每一次迭代都是一次超步。 自动内存管理。该框架永远不会出现 OOM(内存不足),因为如果它没有足够的内存来容纳所有数据,它会将一些数据拆分到磁盘。 边的部分或超级节点的消息可以在内存中,所以你永远不会丢失它。 您可以从 HDFS 或 HugeGraph 或任何其他系统加载数据。 您可以将结果输出到 HDFS 或 HugeGraph,或任何其他系统。 易于开发新算法。您只需要像在单个服务器中一样专注于仅顶点处理,而不必担心消息传输和内存存储管理。 2 依赖 2.1 安装 Java 11 (JDK 11) 必须 在 ≥ Java 11 的环境上启动 Computer,然后自行配置。
在往下阅读之前务必执行 java -version 命令查看 jdk 版本
3 开始 要使用 HugeGraph-Computer 运行算法,必须装有 Java 11 或更高版本。
还需要首先部署 HugeGraph-Server 和 Etcd .
有两种方式可以获取 HugeGraph-Computer:
3.1.1 下载已编译的压缩包 下载最新版本的 HugeGraph-Computer release 包:
1 wget https://downloads.apache.org/incubator/hugegraph/${ version } /apache-hugegraph-computer-incubating-${ version } .tar.gz
2 tar zxvf apache-hugegraph-computer-incubating-${ version } .tar.gz -C hugegraph-computer 3.1.2 克隆源码编译打包 克隆最新版本的 HugeGraph-Computer 源码包:
1 $ git clone https://github.com/apache/hugegraph-computer.git 编译生成 tar 包:
1 cd hugegraph-computer
2 mvn clean package -DskipTests 3.1.3 启动 master 节点 您可以使用 -c 参数指定配置文件,更多 computer 配置请看:Computer Config Options
1 cd hugegraph-computer
2 bin/start-computer.sh -d local -r master 3.1.4 启动 worker 节点
1 bin/start-computer.sh -d local -r worker 3.1.5 查询算法结果 2.5.1 为 server 启用 OLAP 索引查询
如果没有启用 OLAP 索引,则需要启用,更多参考:modify-graphs-read-mode
1 PUT http://localhost:8080/graphs/hugegraph/graph_read_mode
2
3 "ALL" 3.1.5.2 查询 page_rank 属性值:
1 curl "http://localhost:8080/graphs/hugegraph/graph/vertices?page&limit=3" | gunzip 要使用 HugeGraph-Computer 运行算法,您需要先部署 HugeGraph-Server
3.2.1 安装 HugeGraph-Computer CRD
1 # Kubernetes version >= v1.16
2 kubectl apply -f https://raw.githubusercontent.com/apache/hugegraph-computer/master/computer-k8s-operator/manifest/hugegraph-computer-crd.v1.yaml
3
4 # Kubernetes version < v1.16
5 kubectl apply -f https://raw.githubusercontent.com/apache/hugegraph-computer/master/computer-k8s-operator/manifest/hugegraph-computer-crd.v1beta1.yaml 3.2.2 显示 CRD
1 kubectl get crd
2
3 NAME CREATED AT
4 hugegraphcomputerjobs.hugegraph.apache.org 2021-09-16T08:01:08Z 3.2.3 安装 hugegraph-computer-operator&etcd-server
1 kubectl apply -f https://raw.githubusercontent.com/apache/hugegraph-computer/master/computer-k8s-operator/manifest/hugegraph-computer-operator.yaml 3.2.4 等待 hugegraph-computer-operator&etcd-server 部署完成
1 kubectl get pod -n hugegraph-computer-operator-system
2
3 NAME READY STATUS RESTARTS AGE
4 hugegraph-computer-operator-controller-manager-58c5545949-jqvzl 1/1 Running 0 15h
5 hugegraph-computer-operator-etcd-28lm67jxk5 1/1 Running 0 15h 3.2.5 提交作业 更多 computer crd spec 请看:Computer CRD
更多 Computer 配置请看:Computer Config Options
1 cat <<EOF | kubectl apply --filename -
2 apiVersion : hugegraph.apache.org/v1
3 kind : HugeGraphComputerJob
4 metadata :
5 namespace : hugegraph-computer-operator-system
6 name : &jobName pagerank-sample
7 spec :
8 jobId : *jobName
9 algorithmName : page_rank
10 image : hugegraph/hugegraph-computer:latest # algorithm image url
11 jarFile : /hugegraph/hugegraph-computer/algorithm/builtin-algorithm.jar # algorithm jar path
12 pullPolicy : Always
13 workerCpu : "4"
14 workerMemory : "4Gi"
15 workerInstances : 5
16 computerConf :
17 job.partitions_count : "20"
18 algorithm.params_class : org.apache.hugegraph.computer.algorithm.centrality.pagerank.PageRankParams
19 hugegraph.url : http://${hugegraph-server-host}:${hugegraph-server-port} # hugegraph server url
20 hugegraph.name : hugegraph # hugegraph graph name
21 EOF 3.2.6 显示作业
1 kubectl get hcjob/pagerank-sample -n hugegraph-computer-operator-system
2
3 NAME JOBID JOBSTATUS
4 pagerank-sample pagerank-sample RUNNING 3.2.7 显示节点日志
1 # Show the master log
2 kubectl logs -l component = pagerank-sample-master -n hugegraph-computer-operator-system
3
4 # Show the worker log
5 kubectl logs -l component = pagerank-sample-worker -n hugegraph-computer-operator-system
6
7 # Show diagnostic log of a job
8 # 注意: 诊断日志仅在作业失败时存在,并且只会保存一小时。
9 kubectl get event --field-selector reason = ComputerJobFailed --field-selector involvedObject.name= pagerank-sample -n hugegraph-computer-operator-system 3.2.8 显示作业的成功事件 NOTE: it will only be saved for one hour
1 kubectl get event --field-selector reason = ComputerJobSucceed --field-selector involvedObject.name= pagerank-sample -n hugegraph-computer-operator-system 3.2.9 查询算法结果 如果输出到 Hugegraph-Server 则与 Locally 模式一致,如果输出到 HDFS ,请检查 hugegraph-computerresults{jobId}目录下的结果文件。
4 内置算法文档 4.1 支持的算法列表: 中心性算法: PageRank BetweennessCentrality ClosenessCentrality DegreeCentrality 社区算法: ClusteringCoefficient Kcore Lpa TriangleCount Wcc 路径算法: RingsDetection RingsDetectionWithFilter 更多算法请看:Built-In algorithms
4.2 算法描述 TODO
5 算法开发指南 TODO
6 注意事项 如果 computer-k8s 模块下面的某些类不存在,你需要运行mvn compile来提前生成对应的类。