You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hugegraph.apache.org by ji...@apache.org on 2026/02/01 12:18:04 UTC
(incubator-hugegraph-doc) branch update-doc updated: Revise and expand Computer config docs (CN/EN)
This is an automated email from the ASF dual-hosted git repository.
jin pushed a commit to branch update-doc
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph-doc.git
The following commit(s) were added to refs/heads/update-doc by this push:
new 06b7a951 Revise and expand Computer config docs (CN/EN)
06b7a951 is described below
commit 06b7a951759421f0393eef401463486528ee2480
Author: imbajin <ji...@apache.org>
AuthorDate: Sun Feb 1 20:17:56 2026 +0800
Revise and expand Computer config docs (CN/EN)
Rewrite and restructure the Computer configuration documentation in both Chinese and English. The changes replace the old flat option tables with organized sections (Basics, Algorithm, Input, Snapshot/Storage, Worker/Master, I/O/Output, Network/Transport, Storage, BSP, Performance, System-managed, K8s Operator, KubeDriver and CRD). Added clear default-value semantics, examples for local and MinIO snapshots, notes about system-managed options (do not modify), and more explanatory text [...]
---
content/cn/docs/config/config-computer.md | 603 +++++++++++++++------
content/en/docs/config/config-computer.md | 579 ++++++++++++++------
.../quickstart/computing/hugegraph-computer.md | 315 ++++++++++-
3 files changed, 1167 insertions(+), 330 deletions(-)
diff --git a/content/cn/docs/config/config-computer.md b/content/cn/docs/config/config-computer.md
index 0b270c9e..08c0439e 100644
--- a/content/cn/docs/config/config-computer.md
+++ b/content/cn/docs/config/config-computer.md
@@ -4,174 +4,445 @@ linkTitle: "图计算 Computer 配置"
weight: 5
---
-### Computer Config Options
-
-| config option | default value | description [...]
-|-----------------------------------------|-------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
-| algorithm.message_class | org.apache.hugegraph.computer.core.config.Null | The class of message passed when compute vertex. [...]
-| algorithm.params_class | org.apache.hugegraph.computer.core.config.Null | The class used to transfer algorithms' parameters before algorithm been run. [...]
-| algorithm.result_class | org.apache.hugegraph.computer.core.config.Null | The class of vertex's value, the instance is used to store computation result for the vertex. [...]
-| allocator.max_vertices_per_thread | 10000 | Maximum number of vertices per thread processed in each memory allocator [...]
-| bsp.etcd_endpoints | http://localhost:2379 | The end points to access etcd. [...]
-| bsp.log_interval | 30000 | The log interval(in ms) to print the log while waiting bsp event. [...]
-| bsp.max_super_step | 10 | The max super step of the algorithm. [...]
-| bsp.register_timeout | 300000 | The max timeout to wait for master and works to register. [...]
-| bsp.wait_master_timeout | 86400000 | The max timeout(in ms) to wait for master bsp event. [...]
-| bsp.wait_workers_timeout | 86400000 | The max timeout to wait for workers bsp event. [...]
-| hgkv.max_data_block_size | 65536 | The max byte size of hgkv-file data block. [...]
-| hgkv.max_file_size | 2147483648 | The max number of bytes in each hgkv-file. [...]
-| hgkv.max_merge_files | 10 | The max number of files to merge at one time. [...]
-| hgkv.temp_file_dir | /tmp/hgkv | This folder is used to store temporary files, temporary files will be generated during the file merging process. [...]
-| hugegraph.name | hugegraph | The graph name to load data and write results back. [...]
-| hugegraph.url | http://127.0.0.1:8080 | The hugegraph url to load data and write results back. [...]
-| input.edge_direction | OUT | The data of the edge in which direction is loaded, when the value is BOTH, the edges in both OUT and IN direction will be loaded. [...]
-| input.edge_freq | MULTIPLE | The frequency of edges can exist between a pair of vertices, allowed values: [SINGLE, SINGLE_PER_LABEL, MULTIPLE]. SINGLE means that only one edge can exist between a pair of vertices, use sourceId + targetId to identify it; SINGLE_PER_LABEL means that each edge label can exist one edge between a pair of vertices, use sourceId + edgelabel + targetI [...]
-| input.filter_class | org.apache.hugegraph.computer.core.input.filter.DefaultInputFilter | The class to create input-filter object, input-filter is used to Filter vertex edges according to user needs. [...]
-| input.loader_schema_path || The schema path of loader input, only takes effect when the input.source_type=loader is enabled |
-| input.loader_struct_path || The struct path of loader input, only takes effect when the input.source_type=loader is enabled |
-| input.max_edges_in_one_vertex | 200 | The maximum number of adjacent edges allowed to be attached to a vertex, the adjacent edges will be stored and transferred together as a batch unit. [...]
-| input.source_type | hugegraph-server | The source type to load input data, allowed values: ['hugegraph-server', 'hugegraph-loader'], the 'hugegraph-loader' means use hugegraph-loader load data from HDFS or file, if use 'hugegraph-loader' load data then please config 'input.loader_struct_path' and 'input.loader_schema_path'. [...]
-| input.split_fetch_timeout | 300 | The timeout in seconds to fetch input splits [...]
-| input.split_max_splits | 10000000 | The maximum number of input splits [...]
-| input.split_page_size | 500 | The page size for streamed load input split data [...]
-| input.split_size | 1048576 | The input split size in bytes [...]
-| job.id | local_0001 | The job id on Yarn cluster or K8s cluster. [...]
-| job.partitions_count | 1 | The partitions count for computing one graph algorithm job. [...]
-| job.partitions_thread_nums | 4 | The number of threads for partition parallel compute. [...]
-| job.workers_count | 1 | The workers count for computing one graph algorithm job. [...]
-| master.computation_class | org.apache.hugegraph.computer.core.master.DefaultMasterComputation | Master-computation is computation that can determine whether to continue next superstep. It runs at the end of each superstep on master. [...]
-| output.batch_size | 500 | The batch size of output [...]
-| output.batch_threads | 1 | The threads number used to batch output [...]
-| output.hdfs_core_site_path || The hdfs core site path. |
-| output.hdfs_delimiter | , | The delimiter of hdfs output. [...]
-| output.hdfs_kerberos_enable | false | Is Kerberos authentication enabled for Hdfs. [...]
-| output.hdfs_kerberos_keytab || The Hdfs's key tab file for kerberos authentication. |
-| output.hdfs_kerberos_principal || The Hdfs's principal for kerberos authentication. |
-| output.hdfs_krb5_conf | /etc/krb5.conf | Kerberos configuration file. [...]
-| output.hdfs_merge_partitions | true | Whether merge output files of multiple partitions. [...]
-| output.hdfs_path_prefix | /hugegraph-computer/results | The directory of hdfs output result. [...]
-| output.hdfs_replication | 3 | The replication number of hdfs. [...]
-| output.hdfs_site_path || The hdfs site path. |
-| output.hdfs_url | hdfs://127.0.0.1:9000 | The hdfs url of output. [...]
-| output.hdfs_user | hadoop | The hdfs user of output. [...]
-| output.output_class | org.apache.hugegraph.computer.core.output.LogOutput | The class to output the computation result of each vertex. Be called after iteration computation. [...]
-| output.result_name | value | The value is assigned dynamically by #name() of instance created by WORKER_COMPUTATION_CLASS. [...]
-| output.result_write_type | OLAP_COMMON | The result write-type to output to hugegraph, allowed values are: [OLAP_COMMON, OLAP_SECONDARY, OLAP_RANGE]. [...]
-| output.retry_interval | 10 | The retry interval when output failed [...]
-| output.retry_times | 3 | The retry times when output failed [...]
-| output.single_threads | 1 | The threads number used to single output [...]
-| output.thread_pool_shutdown_timeout | 60 | The timeout seconds of output threads pool shutdown [...]
-| output.with_adjacent_edges | false | Output the adjacent edges of the vertex or not [...]
-| output.with_edge_properties | false | Output the properties of the edge or not [...]
-| output.with_vertex_properties | false | Output the properties of the vertex or not [...]
-| sort.thread_nums | 4 | The number of threads performing internal sorting. [...]
-| transport.client_connect_timeout | 3000 | The timeout(in ms) of client connect to server. [...]
-| transport.client_threads | 4 | The number of transport threads for client. [...]
-| transport.close_timeout | 10000 | The timeout(in ms) of close server or close client. [...]
-| transport.finish_session_timeout | 0 | The timeout(in ms) to finish session, 0 means using (transport.sync_request_timeout * transport.max_pending_requests). [...]
-| transport.heartbeat_interval | 20000 | The minimum interval(in ms) between heartbeats on client side. [...]
-| transport.io_mode | AUTO | The network IO Mode, either 'NIO', 'EPOLL', 'AUTO', the 'AUTO' means selecting the property mode automatically. [...]
-| transport.max_pending_requests | 8 | The max number of client unreceived ack, it will trigger the sending unavailable if the number of unreceived ack >= max_pending_requests. [...]
-| transport.max_syn_backlog | 511 | The capacity of SYN queue on server side, 0 means using system default value. [...]
-| transport.max_timeout_heartbeat_count | 120 | The maximum times of timeout heartbeat on client side, if the number of timeouts waiting for heartbeat response continuously > max_heartbeat_timeouts the channel will be closed from client side. [...]
-| transport.min_ack_interval | 200 | The minimum interval(in ms) of server reply ack. [...]
-| transport.min_pending_requests | 6 | The minimum number of client unreceived ack, it will trigger the sending available if the number of unreceived ack < min_pending_requests. [...]
-| transport.network_retries | 3 | The number of retry attempts for network communication,if network unstable. [...]
-| transport.provider_class | org.apache.hugegraph.computer.core.network.netty.NettyTransportProvider | The transport provider, currently only supports Netty. [...]
-| transport.receive_buffer_size | 0 | The size of socket receive-buffer in bytes, 0 means using system default value. [...]
-| transport.recv_file_mode | true | Whether enable receive buffer-file mode, it will receive buffer write file from socket by zero-copy if enable. [...]
-| transport.send_buffer_size | 0 | The size of socket send-buffer in bytes, 0 means using system default value. [...]
-| transport.server_host | 127.0.0.1 | The server hostname or ip to listen on to transfer data. [...]
-| transport.server_idle_timeout | 360000 | The max timeout(in ms) of server idle. [...]
-| transport.server_port | 0 | The server port to listen on to transfer data. The system will assign a random port if it's set to 0. [...]
-| transport.server_threads | 4 | The number of transport threads for server. [...]
-| transport.sync_request_timeout | 10000 | The timeout(in ms) to wait response after sending sync-request. [...]
-| transport.tcp_keep_alive | true | Whether enable TCP keep-alive. [...]
-| transport.transport_epoll_lt | false | Whether enable EPOLL level-trigger. [...]
-| transport.write_buffer_high_mark | 67108864 | The high water mark for write buffer in bytes, it will trigger the sending unavailable if the number of queued bytes > write_buffer_high_mark. [...]
-| transport.write_buffer_low_mark | 33554432 | The low water mark for write buffer in bytes, it will trigger the sending available if the number of queued bytes < write_buffer_low_mark.org.apache.hugegraph.config.OptionChecker$$Lambda$97/0x00000008001c8440@776a6d9b [...]
-| transport.write_socket_timeout | 3000 | The timeout(in ms) to write data to socket buffer. [...]
-| valuefile.max_segment_size | 1073741824 | The max number of bytes in each segment of value-file. [...]
-| worker.combiner_class | org.apache.hugegraph.computer.core.config.Null | Combiner can combine messages into one value for a vertex, for example page-rank algorithm can combine messages of a vertex to a sum value. [...]
-| worker.computation_class | org.apache.hugegraph.computer.core.config.Null | The class to create worker-computation object, worker-computation is used to compute each vertex in each superstep. [...]
-| worker.data_dirs | [jobs] | The directories separated by ',' that received vertices and messages can persist into. [...]
-| worker.edge_properties_combiner_class | org.apache.hugegraph.computer.core.combiner.OverwritePropertiesCombiner | The combiner can combine several properties of the same edge into one properties at inputstep. [...]
-| worker.partitioner | org.apache.hugegraph.computer.core.graph.partition.HashPartitioner | The partitioner that decides which partition a vertex should be in, and which worker a partition should be in. [...]
-| worker.received_buffers_bytes_limit | 104857600 | The limit bytes of buffers of received data, the total size of all buffers can't excess this limit. If received buffers reach this limit, they will be merged into a file. [...]
-| worker.vertex_properties_combiner_class | org.apache.hugegraph.computer.core.combiner.OverwritePropertiesCombiner | The combiner can combine several properties of the same vertex into one properties at inputstep. [...]
-| worker.wait_finish_messages_timeout | 86400000 | The max timeout(in ms) message-handler wait for finish-message of all workers. [...]
-| worker.wait_sort_timeout | 600000 | The max timeout(in ms) message-handler wait for sort-thread to sort one batch of buffers. [...]
-| worker.write_buffer_capacity | 52428800 | The initial size of write buffer that used to store vertex or message. [...]
-| worker.write_buffer_threshold | 52428800 | The threshold of write buffer, exceeding it will trigger sorting, the write buffer is used to store vertex or message. [...]
-
-### K8s Operator Config Options
-
-> NOTE: Option needs to be converted through environment variable settings, e.g. k8s.internal_etcd_url => INTERNAL_ETCD_URL
-
-| config option | default value | description |
-|------------------------------|---------------------------|---------------------------------------------------------------------------------------------------------------------------------|
-| k8s.auto_destroy_pod | true | Whether to automatically destroy all pods when the job is completed or failed. |
-| k8s.close_reconciler_timeout | 120 | The max timeout(in ms) to close reconciler. |
-| k8s.internal_etcd_url | http://127.0.0.1:2379 | The internal etcd url for operator system. |
-| k8s.max_reconcile_retry | 3 | The max retry times of reconcile. |
-| k8s.probe_backlog | 50 | The maximum backlog for serving health probes. |
-| k8s.probe_port | 9892 | The value is the port that the controller bind to for serving health probes. |
-| k8s.ready_check_internal | 1000 | The time interval(ms) of check ready. |
-| k8s.ready_timeout | 30000 | The max timeout(in ms) of check ready. |
-| k8s.reconciler_count | 10 | The max number of reconciler thread. |
-| k8s.resync_period | 600000 | The minimum frequency at which watched resources are reconciled. |
-| k8s.timezone | Asia/Shanghai | The timezone of computer job and operator. |
-| k8s.watch_namespace | hugegraph-computer-system | The value is watch custom resources in the namespace, ignore other namespaces, the '*' means is all namespaces will be watched. |
+### Computer 配置选项
+
+> **默认值说明:**
+> - 以下配置项显示的是**代码默认值**(定义在 `ComputerOptions.java` 中)
+> - 当**打包配置文件**(`conf/computer.properties` 分发包中)指定了不同的值时,会以 `值 (打包: 值)` 的形式标注
+> - 示例:`300000 (打包: 100000)` 表示代码默认值为 300000,但分发包默认值为 100000
+> - 对于生产环境部署,除非明确覆盖,否则打包默认值优先生效
+
+---
+
+### 1. 基础配置
+
+HugeGraph-Computer 核心作业设置。
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| hugegraph.url | http://127.0.0.1:8080 | HugeGraph 服务器 URL,用于加载数据和写回结果。 |
+| hugegraph.name | hugegraph | 图名称,用于加载数据和写回结果。 |
+| hugegraph.username | "" (空) | HugeGraph 认证用户名(如果未启用认证则留空)。 |
+| hugegraph.password | "" (空) | HugeGraph 认证密码(如果未启用认证则留空)。 |
+| job.id | local_0001 (打包: local_001) | YARN 集群或 K8s 集群上的作业标识符。 |
+| job.namespace | "" (空) | 作业命名空间,可以分隔不同的数据源。🔒 **由系统管理 - 不要手动修改**。 |
+| job.workers_count | 1 | 执行一个图算法作业的 Worker 数量。🔒 **在 K8s 中由系统管理 - 不要手动修改**。 |
+| job.partitions_count | 1 | 执行一个图算法作业的分区数量。 |
+| job.partitions_thread_nums | 4 | 分区并行计算的线程数量。 |
+
+---
+
+### 2. 算法配置
+
+计算逻辑的算法特定配置。
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| algorithm.params_class | org.apache.hugegraph.computer.core.config.Null | ⚠️ **必填** 在算法运行前用于传递算法参数的类。 |
+| algorithm.result_class | org.apache.hugegraph.computer.core.config.Null | 顶点值的类,用于存储顶点的计算结果。 |
+| algorithm.message_class | org.apache.hugegraph.computer.core.config.Null | 计算顶点时传递的消息类。 |
+
+---
+
+### 3. 输入配置
+
+从 HugeGraph 或其他数据源加载输入数据的配置。
+
+#### 3.1 输入源
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| input.source_type | hugegraph-server | 加载输入数据的源类型,允许值:['hugegraph-server', 'hugegraph-loader']。'hugegraph-loader' 表示使用 hugegraph-loader 从 HDFS 或文件加载数据。如果使用 'hugegraph-loader',请配置 'input.loader_struct_path' 和 'input.loader_schema_path'。 |
+| input.loader_struct_path | "" (空) | Loader 输入的结构路径,仅在 input.source_type=loader 启用时生效。 |
+| input.loader_schema_path | "" (空) | Loader 输入的 schema 路径,仅在 input.source_type=loader 启用时生效。 |
+
+#### 3.2 输入分片
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| input.split_size | 1048576 (1 MB) | 输入分片大小(字节)。 |
+| input.split_max_splits | 10000000 | 最大输入分片数量。 |
+| input.split_page_size | 500 | 流式加载输入分片数据的页面大小。 |
+| input.split_fetch_timeout | 300 | 获取输入分片的超时时间(秒)。 |
+
+#### 3.3 输入处理
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| input.filter_class | org.apache.hugegraph.computer.core.input.filter.DefaultInputFilter | 创建输入过滤器对象的类。输入过滤器用于根据用户需求过滤顶点边。 |
+| input.edge_direction | OUT | 要加载的边的方向,允许值:[OUT, IN, BOTH]。当值为 BOTH 时,将加载 OUT 和 IN 两个方向的边。 |
+| input.edge_freq | MULTIPLE | 一对顶点之间可以存在的边的频率,允许值:[SINGLE, SINGLE_PER_LABEL, MULTIPLE]。SINGLE 表示一对顶点之间只能存在一条边(通过 sourceId + targetId 标识);SINGLE_PER_LABEL 表示每个边标签在一对顶点之间可以有一条边(通过 sourceId + edgeLabel + targetId 标识);MULTIPLE 表示一对顶点之间可以存在多条边(通过 sourceId + edgeLabel + sortValues + targetId 标识)。 |
+| input.max_edges_in_one_vertex | 200 | 允许附加到一个顶点的最大邻接边数量。邻接边将作为一个批处理单元一起存储和传输。 |
+
+#### 3.4 输入性能
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| input.send_thread_nums | 4 | 并行发送顶点或边的线程数量。 |
+
+---
+
+### 4. 快照与存储配置
+
+HugeGraph-Computer 支持快照功能,可将顶点/边分区保存到本地存储或 MinIO 对象存储,用于断点恢复或加速重复计算。
+
+#### 4.1 基础快照配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| snapshot.write | false | 是否写入输入顶点/边分区的快照。 |
+| snapshot.load | false | 是否从顶点/边分区的快照加载。 |
+| snapshot.name | "" (空) | 用户自定义的快照名称,用于区分不同的快照。 |
+
+#### 4.2 MinIO 集成(可选)
+
+MinIO 可用作 K8s 部署中快照的分布式对象存储后端。
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| snapshot.minio_endpoint | "" (空) | MinIO 服务端点(例如 `http://minio:9000`)。使用 MinIO 时必填。 |
+| snapshot.minio_access_key | minioadmin | MinIO 认证访问密钥。 |
+| snapshot.minio_secret_key | minioadmin | MinIO 认证密钥。 |
+| snapshot.minio_bucket_name | "" (空) | 用于存储快照数据的 MinIO 存储桶名称。 |
+
+**使用场景:**
+- **断点恢复**:作业失败后从快照恢复,避免重新加载数据
+- **重复计算**:多次运行同一算法时从快照加载数据以加速启动
+- **A/B 测试**:保存同一数据集的多个快照版本,测试不同的算法参数
+
+**示例:本地快照**(在 `computer.properties` 中):
+```properties
+snapshot.write=true
+snapshot.name=pagerank-snapshot-20260201
+```
+
+**示例:MinIO 快照**(在 K8s CRD `computerConf` 中):
+```yaml
+computerConf:
+ snapshot.write: "true"
+ snapshot.name: "pagerank-snapshot-v1"
+ snapshot.minio_endpoint: "http://minio:9000"
+ snapshot.minio_access_key: "my-access-key"
+ snapshot.minio_secret_key: "my-secret-key"
+ snapshot.minio_bucket_name: "hugegraph-snapshots"
+```
+
+---
+
+### 5. Worker 与 Master 配置
+
+Worker 和 Master 计算逻辑的配置。
+
+#### 5.1 Master 配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| master.computation_class | org.apache.hugegraph.computer.core.master.DefaultMasterComputation | Master 计算是可以决定是否继续下一个超步的计算。它在每个超步结束时在 master 上运行。 |
+
+#### 5.2 Worker 计算
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| worker.computation_class | org.apache.hugegraph.computer.core.config.Null | 创建 worker 计算对象的类。Worker 计算用于在每个超步中计算每个顶点。 |
+| worker.combiner_class | org.apache.hugegraph.computer.core.config.Null | Combiner 可以将消息组合为一个顶点的一个值。例如,PageRank 算法可以将一个顶点的消息组合为一个求和值。 |
+| worker.partitioner | org.apache.hugegraph.computer.core.graph.partition.HashPartitioner | 分区器,决定顶点应该在哪个分区中,以及分区应该在哪个 worker 中。 |
+
+#### 5.3 Worker 组合器
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| worker.vertex_properties_combiner_class | org.apache.hugegraph.computer.core.combiner.OverwritePropertiesCombiner | 组合器可以在输入步骤将同一顶点的多个属性组合为一个属性。 |
+| worker.edge_properties_combiner_class | org.apache.hugegraph.computer.core.combiner.OverwritePropertiesCombiner | 组合器可以在输入步骤将同一边的多个属性组合为一个属性。 |
+
+#### 5.4 Worker 缓冲区
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| worker.received_buffers_bytes_limit | 104857600 (100 MB) | 接收数据缓冲区的限制字节数。所有缓冲区的总大小不能超过此限制。如果接收缓冲区达到此限制,它们将被合并到文件中(溢出到磁盘)。 |
+| worker.write_buffer_capacity | 52428800 (50 MB) | 用于存储顶点或消息的写缓冲区的初始大小。 |
+| worker.write_buffer_threshold | 52428800 (50 MB) | 写缓冲区的阈值。超过它将触发排序。写缓冲区用于存储顶点或消息。 |
+
+#### 5.5 Worker 数据与超时
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| worker.data_dirs | [jobs] | 用逗号分隔的目录,接收的顶点和消息可以持久化到其中。 |
+| worker.wait_sort_timeout | 600000 (10 分钟) | 消息处理程序等待排序线程对一批缓冲区进行排序的最大超时时间(毫秒)。 |
+| worker.wait_finish_messages_timeout | 86400000 (24 小时) | 消息处理程序等待所有 worker 完成消息的最大超时时间(毫秒)。 |
+
+---
+
+### 6. I/O 与输出配置
+
+输出计算结果的配置。
+
+#### 6.1 输出类与结果
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| output.output_class | org.apache.hugegraph.computer.core.output.LogOutput | 输出每个顶点计算结果的类。在迭代计算后调用。 |
+| output.result_name | value | 该值由 WORKER_COMPUTATION_CLASS 创建的实例的 #name() 动态分配。 |
+| output.result_write_type | OLAP_COMMON | 输出到 HugeGraph 的结果写入类型,允许值:[OLAP_COMMON, OLAP_SECONDARY, OLAP_RANGE]。 |
+
+#### 6.2 输出行为
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| output.with_adjacent_edges | false | 是否输出顶点的邻接边。 |
+| output.with_vertex_properties | false | 是否输出顶点的属性。 |
+| output.with_edge_properties | false | 是否输出边的属性。 |
+
+#### 6.3 批量输出
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| output.batch_size | 500 | 输出的批处理大小。 |
+| output.batch_threads | 1 | 用于批量输出的线程数量。 |
+| output.single_threads | 1 | 用于单个输出的线程数量。 |
+
+#### 6.4 HDFS 输出
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| output.hdfs_url | hdfs://127.0.0.1:9000 | 输出的 HDFS URL。 |
+| output.hdfs_user | hadoop | 输出的 HDFS 用户。 |
+| output.hdfs_path_prefix | /hugegraph-computer/results | HDFS 输出结果的目录。 |
+| output.hdfs_delimiter | , (逗号) | HDFS 输出的分隔符。 |
+| output.hdfs_merge_partitions | true | 是否合并多个分区的输出文件。 |
+| output.hdfs_replication | 3 | HDFS 的副本数。 |
+| output.hdfs_core_site_path | "" (空) | HDFS core site 路径。 |
+| output.hdfs_site_path | "" (空) | HDFS site 路径。 |
+| output.hdfs_kerberos_enable | false | 是否为 HDFS 启用 Kerberos 认证。 |
+| output.hdfs_kerberos_principal | "" (空) | HDFS 的 Kerberos 认证 principal。 |
+| output.hdfs_kerberos_keytab | "" (空) | HDFS 的 Kerberos 认证 keytab 文件。 |
+| output.hdfs_krb5_conf | /etc/krb5.conf | Kerberos 配置文件路径。 |
+
+#### 6.5 重试与超时
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| output.retry_times | 3 | 输出失败时的重试次数。 |
+| output.retry_interval | 10 | 输出失败时的重试间隔(秒)。 |
+| output.thread_pool_shutdown_timeout | 60 | 输出线程池关闭的超时时间(秒)。 |
+
+---
+
+### 7. 网络与传输配置
+
+Worker 和 Master 之间网络通信的配置。
+
+#### 7.1 服务器配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| transport.server_host | 127.0.0.1 | 🔒 **由系统管理** 监听传输数据的服务器主机名或 IP。不要手动修改。 |
+| transport.server_port | 0 | 🔒 **由系统管理** 监听传输数据的服务器端口。如果设置为 0,系统将分配一个随机端口。不要手动修改。 |
+| transport.server_threads | 4 | 服务器传输线程的数量。 |
+
+#### 7.2 客户端配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| transport.client_threads | 4 | 客户端传输线程的数量。 |
+| transport.client_connect_timeout | 3000 | 客户端连接到服务器的超时时间(毫秒)。 |
+
+#### 7.3 协议配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| transport.provider_class | org.apache.hugegraph.computer.core.network.netty.NettyTransportProvider | 传输提供程序,目前仅支持 Netty。 |
+| transport.io_mode | AUTO | 网络 IO 模式,允许值:[NIO, EPOLL, AUTO]。AUTO 表示自动选择适当的模式。 |
+| transport.tcp_keep_alive | true | 是否启用 TCP keep-alive。 |
+| transport.transport_epoll_lt | false | 是否启用 EPOLL 水平触发(仅在 io_mode=EPOLL 时有效)。 |
+
+#### 7.4 缓冲区配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| transport.send_buffer_size | 0 | Socket 发送缓冲区大小(字节)。0 表示使用系统默认值。 |
+| transport.receive_buffer_size | 0 | Socket 接收缓冲区大小(字节)。0 表示使用系统默认值。 |
+| transport.write_buffer_high_mark | 67108864 (64 MB) | 写缓冲区的高水位标记(字节)。如果排队字节数 > write_buffer_high_mark,将触发发送不可用。 |
+| transport.write_buffer_low_mark | 33554432 (32 MB) | 写缓冲区的低水位标记(字节)。如果排队字节数 < write_buffer_low_mark,将触发发送可用。 |
+
+#### 7.5 流量控制
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| transport.max_pending_requests | 8 | 客户端未接收 ACK 的最大数量。如果未接收 ACK 的数量 >= max_pending_requests,将触发发送不可用。 |
+| transport.min_pending_requests | 6 | 客户端未接收 ACK 的最小数量。如果未接收 ACK 的数量 < min_pending_requests,将触发发送可用。 |
+| transport.min_ack_interval | 200 | 服务器回复 ACK 的最小间隔(毫秒)。 |
+
+#### 7.6 超时配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| transport.close_timeout | 10000 | 关闭服务器或关闭客户端的超时时间(毫秒)。 |
+| transport.sync_request_timeout | 10000 | 发送同步请求后等待响应的超时时间(毫秒)。 |
+| transport.finish_session_timeout | 0 | 完成会话的超时时间(毫秒)。0 表示使用 (transport.sync_request_timeout × transport.max_pending_requests)。 |
+| transport.write_socket_timeout | 3000 | 将数据写入 socket 缓冲区的超时时间(毫秒)。 |
+| transport.server_idle_timeout | 360000 (6 分钟) | 服务器空闲的最大超时时间(毫秒)。 |
+
+#### 7.7 心跳配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| transport.heartbeat_interval | 20000 (20 秒) | 客户端心跳之间的最小间隔(毫秒)。 |
+| transport.max_timeout_heartbeat_count | 120 | 客户端超时心跳的最大次数。如果连续等待心跳响应超时的次数 > max_timeout_heartbeat_count,通道将从客户端关闭。 |
+
+#### 7.8 高级网络设置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| transport.max_syn_backlog | 511 | 服务器端 SYN 队列的容量。0 表示使用系统默认值。 |
+| transport.recv_file_mode | true | 是否启用接收缓冲文件模式。如果启用,将使用零拷贝从 socket 接收缓冲区并写入文件。**注意**:需要操作系统支持零拷贝(例如 Linux sendfile/splice)。 |
+| transport.network_retries | 3 | 网络通信不稳定时的重试次数。 |
+
+---
+
+### 8. 存储与持久化配置
+
+HGKV(HugeGraph Key-Value)存储引擎和值文件的配置。
+
+#### 8.1 HGKV 配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| hgkv.max_file_size | 2147483648 (2 GB) | 每个 HGKV 文件的最大字节数。 |
+| hgkv.max_data_block_size | 65536 (64 KB) | HGKV 文件数据块的最大字节大小。 |
+| hgkv.max_merge_files | 10 | 一次合并的最大文件数。 |
+| hgkv.temp_file_dir | /tmp/hgkv | 此文件夹用于在文件合并过程中存储临时文件。 |
+
+#### 8.2 值文件配置
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| valuefile.max_segment_size | 1073741824 (1 GB) | 值文件每个段的最大字节数。 |
+
+---
+
+### 9. BSP 与协调配置
+
+批量同步并行(BSP)协议和 etcd 协调的配置。
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| bsp.etcd_endpoints | http://localhost:2379 | 🔒 **在 K8s 中由系统管理** 访问 etcd 的端点。对于多个端点,使用逗号分隔列表:`http://host1:port1,http://host2:port2`。不要在 K8s 部署中手动修改。 |
+| bsp.max_super_step | 10 (打包: 2) | 算法的最大超步数。 |
+| bsp.register_timeout | 300000 (打包: 100000) | 等待 master 和 worker 注册的最大超时时间(毫秒)。 |
+| bsp.wait_workers_timeout | 86400000 (24 小时) | 等待 worker BSP 事件的最大超时时间(毫秒)。 |
+| bsp.wait_master_timeout | 86400000 (24 小时) | 等待 master BSP 事件的最大超时时间(毫秒)。 |
+| bsp.log_interval | 30000 (30 秒) | 等待 BSP 事件时打印日志的日志间隔(毫秒)。 |
+
+---
+
+### 10. 性能调优配置
+
+性能优化的配置。
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| allocator.max_vertices_per_thread | 10000 | 每个内存分配器中每个线程处理的最大顶点数。 |
+| sort.thread_nums | 4 | 执行内部排序的线程数量。 |
+
+---
+
+### 11. 系统管理配置
+
+⚠️ **由系统管理的配置项 - 禁止用户手动修改。**
+
+以下配置项由 K8s Operator、Driver 或运行时系统自动管理。手动修改将导致集群通信失败或作业调度错误。
+
+| 配置项 | 管理者 | 说明 |
+|--------|--------|------|
+| bsp.etcd_endpoints | K8s Operator | 自动设置为 operator 的 etcd 服务地址 |
+| transport.server_host | 运行时 | 自动设置为 pod/容器主机名 |
+| transport.server_port | 运行时 | 自动分配随机端口 |
+| job.namespace | K8s Operator | 自动设置为作业命名空间 |
+| job.id | K8s Operator | 自动从 CRD 设置为作业 ID |
+| job.workers_count | K8s Operator | 自动从 CRD `workerInstances` 设置 |
+| rpc.server_host | 运行时 | RPC 服务器主机名(系统管理) |
+| rpc.server_port | 运行时 | RPC 服务器端口(系统管理) |
+| rpc.remote_url | 运行时 | RPC 远程 URL(系统管理) |
+
+**为什么禁止修改:**
+- **BSP/RPC 配置**:必须与实际部署的 etcd/RPC 服务匹配。手动覆盖会破坏协调。
+- **作业配置**:必须与 K8s CRD 规范匹配。不匹配会导致 worker 数量错误。
+- **传输配置**:必须使用实际的 pod 主机名/端口。手动值会阻止 worker 间通信。
+
+---
+
+### K8s Operator 配置选项
+
+> 注意:选项需要通过环境变量设置进行转换,例如 k8s.internal_etcd_url => INTERNAL_ETCD_URL
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| k8s.auto_destroy_pod | true | 作业完成或失败时是否自动销毁所有 pod。 |
+| k8s.close_reconciler_timeout | 120 | 关闭 reconciler 的最大超时时间(毫秒)。 |
+| k8s.internal_etcd_url | http://127.0.0.1:2379 | operator 系统的内部 etcd URL。 |
+| k8s.max_reconcile_retry | 3 | reconcile 的最大重试次数。 |
+| k8s.probe_backlog | 50 | 服务健康探针的最大积压。 |
+| k8s.probe_port | 9892 | controller 绑定的用于服务健康探针的端口。 |
+| k8s.ready_check_internal | 1000 | 检查就绪的时间间隔(毫秒)。 |
+| k8s.ready_timeout | 30000 | 检查就绪的最大超时时间(毫秒)。 |
+| k8s.reconciler_count | 10 | reconciler 线程的最大数量。 |
+| k8s.resync_period | 600000 | 被监视资源进行 reconcile 的最小频率。 |
+| k8s.timezone | Asia/Shanghai | computer 作业和 operator 的时区。 |
+| k8s.watch_namespace | hugegraph-computer-system | 监视自定义资源的命名空间。使用 '*' 监视所有命名空间。 |
+
+---
### HugeGraph-Computer CRD
> CRD: https://github.com/apache/hugegraph-computer/blob/master/computer-k8s-operator/manifest/hugegraph-computer-crd.v1.yaml
-| spec | default value | description | required |
-|-----------------|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|
-| algorithmName | | The name of algorithm. | true |
-| jobId | | The job id. | true |
-| image | | The image of algorithm. | true |
-| computerConf | | The map of computer config options. | true |
-| workerInstances | | The number of worker instances, it will instead the 'job.workers_count' option. | true |
-| pullPolicy | Always | The pull-policy of image, detail please refer to: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy | false |
-| pullSecrets | | The pull-secrets of Image, detail please refer to: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | false |
-| masterCpu | | The cpu limit of master, the unit can be 'm' or without unit detail please refer to:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu) | false |
-| workerCpu | | The cpu limit of worker, the unit can be 'm' or without unit detail please refer to:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu) | false |
-| masterMemory | | The memory limit of master, the unit can be one of Ei、Pi、Ti、Gi、Mi、Ki detail please refer to:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory) | false |
-| workerMemory | | The memory limit of worker, the unit can be one of Ei、Pi、Ti、Gi、Mi、Ki detail please refer to:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory) | false |
-| log4jXml | | The content of log4j.xml for computer job. | false |
-| jarFile | | The jar path of computer algorithm. | false |
-| remoteJarUri | | The remote jar uri of computer algorithm, it will overlay algorithm image. | false |
-| jvmOptions | | The java startup parameters of computer job. | false |
-| envVars | | please refer to: https://kubernetes.io/docs/tasks/inject-data-application/define-interdependent-environment-variables/ | false |
-| envFrom | | please refer to: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | false |
-| masterCommand | bin/start-computer.sh | The run command of master, equivalent to 'Entrypoint' field of Docker. | false |
-| masterArgs | ["-r master", "-d k8s"] | The run args of master, equivalent to 'Cmd' field of Docker. | false |
-| workerCommand | bin/start-computer.sh | The run command of worker, equivalent to 'Entrypoint' field of Docker. | false |
-| workerArgs | ["-r worker", "-d k8s"] | The run args of worker, equivalent to 'Cmd' field of Docker. | false |
-| volumes | | Please refer to: https://kubernetes.io/docs/concepts/storage/volumes/ | false |
-| volumeMounts | | Please refer to: https://kubernetes.io/docs/concepts/storage/volumes/ | false |
-| secretPaths | | The map of k8s-secret name and mount path. | false |
-| configMapPaths | | The map of k8s-configmap name and mount path. | false |
-| podTemplateSpec | | Please refer to: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-template-v1/#PodTemplateSpec | false |
-| securityContext | | Please refer to: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | false |
-
-### KubeDriver Config Options
-
-| config option | default value | description |
-|----------------------------------|------------------------------------------|-----------------------------------------------------------|
-| k8s.build_image_bash_path || The path of command used to build image. |
-| k8s.enable_internal_algorithm | true | Whether enable internal algorithm. |
-| k8s.framework_image_url | hugegraph/hugegraph-computer:latest | The image url of computer framework. |
-| k8s.image_repository_password || The password for login image repository. |
-| k8s.image_repository_registry || The address for login image repository. |
-| k8s.image_repository_url | hugegraph/hugegraph-computer | The url of image repository. |
-| k8s.image_repository_username || The username for login image repository. |
-| k8s.internal_algorithm | [pageRank] | The name list of all internal algorithm. |
-| k8s.internal_algorithm_image_url | hugegraph/hugegraph-computer:latest | The image url of internal algorithm. |
-| k8s.jar_file_dir | /cache/jars/ | The directory where the algorithm jar to upload location. |
-| k8s.kube_config | ~/.kube/config | The path of k8s config file. |
-| k8s.log4j_xml_path || The log4j.xml path for computer job. |
-| k8s.namespace | hugegraph-computer-system | The namespace of hugegraph-computer system. |
-| k8s.pull_secret_names | [] | The names of pull-secret for pulling image. |
+| 字段 | 默认值 | 说明 | 必填 |
+|------|--------|------|------|
+| algorithmName | | 算法名称。 | true |
+| jobId | | 作业 ID。 | true |
+| image | | 算法镜像。 | true |
+| computerConf | | computer 配置选项的映射。 | true |
+| workerInstances | | worker 实例数量,将覆盖 'job.workers_count' 选项。 | true |
+| pullPolicy | Always | 镜像拉取策略,详情请参考:https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy | false |
+| pullSecrets | | 镜像拉取密钥,详情请参考:https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | false |
+| masterCpu | | master 的 CPU 限制,单位可以是 'm' 或无单位,详情请参考:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu) | false |
+| workerCpu | | worker 的 CPU 限制,单位可以是 'm' 或无单位,详情请参考:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu) | false |
+| masterMemory | | master 的内存限制,单位可以是 Ei、Pi、Ti、Gi、Mi、Ki 之一,详情请参考:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory) | false |
+| workerMemory | | worker 的内存限制,单位可以是 Ei、Pi、Ti、Gi、Mi、Ki 之一,详情请参考:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory) | false |
+| log4jXml | | computer 作业的 log4j.xml 内容。 | false |
+| jarFile | | computer 算法的 jar 路径。 | false |
+| remoteJarUri | | computer 算法的远程 jar URI,将覆盖算法镜像。 | false |
+| jvmOptions | | computer 作业的 Java 启动参数。 | false |
+| envVars | | 请参考:https://kubernetes.io/docs/tasks/inject-data-application/define-interdependent-environment-variables/ | false |
+| envFrom | | 请参考:https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | false |
+| masterCommand | bin/start-computer.sh | master 的运行命令,等同于 Docker 的 'Entrypoint' 字段。 | false |
+| masterArgs | ["-r master", "-d k8s"] | master 的运行参数,等同于 Docker 的 'Cmd' 字段。 | false |
+| workerCommand | bin/start-computer.sh | worker 的运行命令,等同于 Docker 的 'Entrypoint' 字段。 | false |
+| workerArgs | ["-r worker", "-d k8s"] | worker 的运行参数,等同于 Docker 的 'Cmd' 字段。 | false |
+| volumes | | 请参考:https://kubernetes.io/docs/concepts/storage/volumes/ | false |
+| volumeMounts | | 请参考:https://kubernetes.io/docs/concepts/storage/volumes/ | false |
+| secretPaths | | k8s-secret 名称和挂载路径的映射。 | false |
+| configMapPaths | | k8s-configmap 名称和挂载路径的映射。 | false |
+| podTemplateSpec | | 请参考:https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-template-v1/#PodTemplateSpec | false |
+| securityContext | | 请参考:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | false |
+
+---
+
+### KubeDriver 配置选项
+
+| 配置项 | 默认值 | 说明 |
+|--------|--------|------|
+| k8s.build_image_bash_path | | 用于构建镜像的命令路径。 |
+| k8s.enable_internal_algorithm | true | 是否启用内部算法。 |
+| k8s.framework_image_url | hugegraph/hugegraph-computer:latest | computer 框架的镜像 URL。 |
+| k8s.image_repository_password | | 登录镜像仓库的密码。 |
+| k8s.image_repository_registry | | 登录镜像仓库的地址。 |
+| k8s.image_repository_url | hugegraph/hugegraph-computer | 镜像仓库的 URL。 |
+| k8s.image_repository_username | | 登录镜像仓库的用户名。 |
+| k8s.internal_algorithm | [pageRank] | 所有内部算法的名称列表。**注意**:算法名称在这里使用驼峰命名法(例如 `pageRank`),但算法实现返回下划线命名法(例如 `page_rank`)。 |
+| k8s.internal_algorithm_image_url | hugegraph/hugegraph-computer:latest | 内部算法的镜像 URL。 |
+| k8s.jar_file_dir | /cache/jars/ | 算法 jar 将上传到的目录。 |
+| k8s.kube_config | ~/.kube/config | k8s 配置文件的路径。 |
+| k8s.log4j_xml_path | | computer 作业的 log4j.xml 路径。 |
+| k8s.namespace | hugegraph-computer-system | hugegraph-computer 系统的命名空间。 |
+| k8s.pull_secret_names | [] | 拉取镜像的 pull-secret 名称。 |
diff --git a/content/en/docs/config/config-computer.md b/content/en/docs/config/config-computer.md
index 08f804c1..3c97d796 100644
--- a/content/en/docs/config/config-computer.md
+++ b/content/en/docs/config/config-computer.md
@@ -6,172 +6,443 @@ weight: 5
### Computer Config Options
-| config option | default value | description [...]
-|-----------------------------------------|-------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
-| algorithm.message_class | org.apache.hugegraph.computer.core.config.Null | The class of message passed when compute vertex. [...]
-| algorithm.params_class | org.apache.hugegraph.computer.core.config.Null | The class used to transfer algorithms' parameters before algorithm been run. [...]
-| algorithm.result_class | org.apache.hugegraph.computer.core.config.Null | The class of vertex's value, the instance is used to store computation result for the vertex. [...]
-| allocator.max_vertices_per_thread | 10000 | Maximum number of vertices per thread processed in each memory allocator [...]
-| bsp.etcd_endpoints | http://localhost:2379 | The end points to access etcd. [...]
-| bsp.log_interval | 30000 | The log interval(in ms) to print the log while waiting bsp event. [...]
-| bsp.max_super_step | 10 | The max super step of the algorithm. [...]
-| bsp.register_timeout | 300000 | The max timeout to wait for master and works to register. [...]
-| bsp.wait_master_timeout | 86400000 | The max timeout(in ms) to wait for master bsp event. [...]
-| bsp.wait_workers_timeout | 86400000 | The max timeout to wait for workers bsp event. [...]
-| hgkv.max_data_block_size | 65536 | The max byte size of hgkv-file data block. [...]
-| hgkv.max_file_size | 2147483648 | The max number of bytes in each hgkv-file. [...]
-| hgkv.max_merge_files | 10 | The max number of files to merge at one time. [...]
-| hgkv.temp_file_dir | /tmp/hgkv | This folder is used to store temporary files, temporary files will be generated during the file merging process. [...]
-| hugegraph.name | hugegraph | The graph name to load data and write results back. [...]
-| hugegraph.url | http://127.0.0.1:8080 | The hugegraph url to load data and write results back. [...]
-| input.edge_direction | OUT | The data of the edge in which direction is loaded, when the value is BOTH, the edges in both OUT and IN direction will be loaded. [...]
-| input.edge_freq | MULTIPLE | The frequency of edges can exist between a pair of vertices, allowed values: [SINGLE, SINGLE_PER_LABEL, MULTIPLE]. SINGLE means that only one edge can exist between a pair of vertices, use sourceId + targetId to identify it; SINGLE_PER_LABEL means that each edge label can exist one edge between a pair of vertices, use sourceId + edgelabel + targetI [...]
-| input.filter_class | org.apache.hugegraph.computer.core.input.filter.DefaultInputFilter | The class to create input-filter object, input-filter is used to Filter vertex edges according to user needs. [...]
-| input.loader_schema_path || The schema path of loader input, only takes effect when the input.source_type=loader is enabled |
-| input.loader_struct_path || The struct path of loader input, only takes effect when the input.source_type=loader is enabled |
-| input.max_edges_in_one_vertex | 200 | The maximum number of adjacent edges allowed to be attached to a vertex, the adjacent edges will be stored and transferred together as a batch unit. [...]
-| input.source_type | hugegraph-server | The source type to load input data, allowed values: ['hugegraph-server', 'hugegraph-loader'], the 'hugegraph-loader' means use hugegraph-loader load data from HDFS or file, if use 'hugegraph-loader' load data then please config 'input.loader_struct_path' and 'input.loader_schema_path'. [...]
-| input.split_fetch_timeout | 300 | The timeout in seconds to fetch input splits [...]
-| input.split_max_splits | 10000000 | The maximum number of input splits [...]
-| input.split_page_size | 500 | The page size for streamed load input split data [...]
-| input.split_size | 1048576 | The input split size in bytes [...]
-| job.id | local_0001 | The job id on Yarn cluster or K8s cluster. [...]
-| job.partitions_count | 1 | The partitions count for computing one graph algorithm job. [...]
-| job.partitions_thread_nums | 4 | The number of threads for partition parallel compute. [...]
-| job.workers_count | 1 | The workers count for computing one graph algorithm job. [...]
-| master.computation_class | org.apache.hugegraph.computer.core.master.DefaultMasterComputation | Master-computation is computation that can determine whether to continue next superstep. It runs at the end of each superstep on master. [...]
-| output.batch_size | 500 | The batch size of output [...]
-| output.batch_threads | 1 | The threads number used to batch output [...]
-| output.hdfs_core_site_path || The hdfs core site path. |
-| output.hdfs_delimiter | , | The delimiter of hdfs output. [...]
-| output.hdfs_kerberos_enable | false | Is Kerberos authentication enabled for Hdfs. [...]
-| output.hdfs_kerberos_keytab || The Hdfs's key tab file for kerberos authentication. |
-| output.hdfs_kerberos_principal || The Hdfs's principal for kerberos authentication. |
-| output.hdfs_krb5_conf | /etc/krb5.conf | Kerberos configuration file. [...]
-| output.hdfs_merge_partitions | true | Whether merge output files of multiple partitions. [...]
-| output.hdfs_path_prefix | /hugegraph-computer/results | The directory of hdfs output result. [...]
-| output.hdfs_replication | 3 | The replication number of hdfs. [...]
-| output.hdfs_site_path || The hdfs site path. |
-| output.hdfs_url | hdfs://127.0.0.1:9000 | The hdfs url of output. [...]
-| output.hdfs_user | hadoop | The hdfs user of output. [...]
-| output.output_class | org.apache.hugegraph.computer.core.output.LogOutput | The class to output the computation result of each vertex. Be called after iteration computation. [...]
-| output.result_name | value | The value is assigned dynamically by #name() of instance created by WORKER_COMPUTATION_CLASS. [...]
-| output.result_write_type | OLAP_COMMON | The result write-type to output to hugegraph, allowed values are: [OLAP_COMMON, OLAP_SECONDARY, OLAP_RANGE]. [...]
-| output.retry_interval | 10 | The retry interval when output failed [...]
-| output.retry_times | 3 | The retry times when output failed [...]
-| output.single_threads | 1 | The threads number used to single output [...]
-| output.thread_pool_shutdown_timeout | 60 | The timeout seconds of output threads pool shutdown [...]
-| output.with_adjacent_edges | false | Output the adjacent edges of the vertex or not [...]
-| output.with_edge_properties | false | Output the properties of the edge or not [...]
-| output.with_vertex_properties | false | Output the properties of the vertex or not [...]
-| sort.thread_nums | 4 | The number of threads performing internal sorting. [...]
-| transport.client_connect_timeout | 3000 | The timeout(in ms) of client connect to server. [...]
-| transport.client_threads | 4 | The number of transport threads for client. [...]
-| transport.close_timeout | 10000 | The timeout(in ms) of close server or close client. [...]
-| transport.finish_session_timeout | 0 | The timeout(in ms) to finish session, 0 means using (transport.sync_request_timeout * transport.max_pending_requests). [...]
-| transport.heartbeat_interval | 20000 | The minimum interval(in ms) between heartbeats on client side. [...]
-| transport.io_mode | AUTO | The network IO Mode, either 'NIO', 'EPOLL', 'AUTO', the 'AUTO' means selecting the property mode automatically. [...]
-| transport.max_pending_requests | 8 | The max number of client unreceived ack, it will trigger the sending unavailable if the number of unreceived ack >= max_pending_requests. [...]
-| transport.max_syn_backlog | 511 | The capacity of SYN queue on server side, 0 means using system default value. [...]
-| transport.max_timeout_heartbeat_count | 120 | The maximum times of timeout heartbeat on client side, if the number of timeouts waiting for heartbeat response continuously > max_heartbeat_timeouts the channel will be closed from client side. [...]
-| transport.min_ack_interval | 200 | The minimum interval(in ms) of server reply ack. [...]
-| transport.min_pending_requests | 6 | The minimum number of client unreceived ack, it will trigger the sending available if the number of unreceived ack < min_pending_requests. [...]
-| transport.network_retries | 3 | The number of retry attempts for network communication,if network unstable. [...]
-| transport.provider_class | org.apache.hugegraph.computer.core.network.netty.NettyTransportProvider | The transport provider, currently only supports Netty. [...]
-| transport.receive_buffer_size | 0 | The size of socket receive-buffer in bytes, 0 means using system default value. [...]
-| transport.recv_file_mode | true | Whether enable receive buffer-file mode, it will receive buffer write file from socket by zero-copy if enable. [...]
-| transport.send_buffer_size | 0 | The size of socket send-buffer in bytes, 0 means using system default value. [...]
-| transport.server_host | 127.0.0.1 | The server hostname or ip to listen on to transfer data. [...]
-| transport.server_idle_timeout | 360000 | The max timeout(in ms) of server idle. [...]
-| transport.server_port | 0 | The server port to listen on to transfer data. The system will assign a random port if it's set to 0. [...]
-| transport.server_threads | 4 | The number of transport threads for server. [...]
-| transport.sync_request_timeout | 10000 | The timeout(in ms) to wait response after sending sync-request. [...]
-| transport.tcp_keep_alive | true | Whether enable TCP keep-alive. [...]
-| transport.transport_epoll_lt | false | Whether enable EPOLL level-trigger. [...]
-| transport.write_buffer_high_mark | 67108864 | The high water mark for write buffer in bytes, it will trigger the sending unavailable if the number of queued bytes > write_buffer_high_mark. [...]
-| transport.write_buffer_low_mark | 33554432 | The low water mark for write buffer in bytes, it will trigger the sending available if the number of queued bytes < write_buffer_low_mark.org.apache.hugegraph.config.OptionChecker$$Lambda$97/0x00000008001c8440@776a6d9b [...]
-| transport.write_socket_timeout | 3000 | The timeout(in ms) to write data to socket buffer. [...]
-| valuefile.max_segment_size | 1073741824 | The max number of bytes in each segment of value-file. [...]
-| worker.combiner_class | org.apache.hugegraph.computer.core.config.Null | Combiner can combine messages into one value for a vertex, for example page-rank algorithm can combine messages of a vertex to a sum value. [...]
-| worker.computation_class | org.apache.hugegraph.computer.core.config.Null | The class to create worker-computation object, worker-computation is used to compute each vertex in each superstep. [...]
-| worker.data_dirs | [jobs] | The directories separated by ',' that received vertices and messages can persist into. [...]
-| worker.edge_properties_combiner_class | org.apache.hugegraph.computer.core.combiner.OverwritePropertiesCombiner | The combiner can combine several properties of the same edge into one properties at inputstep. [...]
-| worker.partitioner | org.apache.hugegraph.computer.core.graph.partition.HashPartitioner | The partitioner that decides which partition a vertex should be in, and which worker a partition should be in. [...]
-| worker.received_buffers_bytes_limit | 104857600 | The limit bytes of buffers of received data, the total size of all buffers can't excess this limit. If received buffers reach this limit, they will be merged into a file. [...]
-| worker.vertex_properties_combiner_class | org.apache.hugegraph.computer.core.combiner.OverwritePropertiesCombiner | The combiner can combine several properties of the same vertex into one properties at inputstep. [...]
-| worker.wait_finish_messages_timeout | 86400000 | The max timeout(in ms) message-handler wait for finish-message of all workers. [...]
-| worker.wait_sort_timeout | 600000 | The max timeout(in ms) message-handler wait for sort-thread to sort one batch of buffers. [...]
-| worker.write_buffer_capacity | 52428800 | The initial size of write buffer that used to store vertex or message. [...]
-| worker.write_buffer_threshold | 52428800 | The threshold of write buffer, exceeding it will trigger sorting, the write buffer is used to store vertex or message. [...]
+> **Default Value Notes:**
+> - Configuration items listed below show the **code default values** (defined in `ComputerOptions.java`)
+> - When the **packaged configuration file** (`conf/computer.properties` in the distribution) specifies a different value, it's noted as: `value (packaged: value)`
+> - Example: `300000 (packaged: 100000)` means the code default is 300000, but the distributed package defaults to 100000
+> - For production deployments, the packaged defaults take precedence unless you explicitly override them
+
+---
+
+### 1. Basic Configuration
+
+Core job settings for HugeGraph-Computer.
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| hugegraph.url | http://127.0.0.1:8080 | The HugeGraph server URL to load data and write results back. |
+| hugegraph.name | hugegraph | The graph name to load data and write results back. |
+| hugegraph.username | "" (empty) | The username for HugeGraph authentication (leave empty if authentication is disabled). |
+| hugegraph.password | "" (empty) | The password for HugeGraph authentication (leave empty if authentication is disabled). |
+| job.id | local_0001 (packaged: local_001) | The job identifier on YARN cluster or K8s cluster. |
+| job.namespace | "" (empty) | The job namespace that can separate different data sources. 🔒 **Managed by system - do not modify manually**. |
+| job.workers_count | 1 | The number of workers for computing one graph algorithm job. 🔒 **Managed by system - do not modify manually in K8s**. |
+| job.partitions_count | 1 | The number of partitions for computing one graph algorithm job. |
+| job.partitions_thread_nums | 4 | The number of threads for partition parallel compute. |
+
+---
+
+### 2. Algorithm Configuration
+
+Algorithm-specific configuration for computation logic.
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| algorithm.params_class | org.apache.hugegraph.computer.core.config.Null | ⚠️ **REQUIRED** The class used to transfer algorithm parameters before the algorithm is run. |
+| algorithm.result_class | org.apache.hugegraph.computer.core.config.Null | The class of vertex's value, used to store the computation result for the vertex. |
+| algorithm.message_class | org.apache.hugegraph.computer.core.config.Null | The class of message passed when computing a vertex. |
+
+---
+
+### 3. Input Configuration
+
+Configuration for loading input data from HugeGraph or other sources.
+
+#### 3.1 Input Source
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| input.source_type | hugegraph-server | The source type to load input data, allowed values: ['hugegraph-server', 'hugegraph-loader']. The 'hugegraph-loader' means use hugegraph-loader to load data from HDFS or file. If using 'hugegraph-loader', please configure 'input.loader_struct_path' and 'input.loader_schema_path'. |
+| input.loader_struct_path | "" (empty) | The struct path of loader input, only takes effect when input.source_type=loader is enabled. |
+| input.loader_schema_path | "" (empty) | The schema path of loader input, only takes effect when input.source_type=loader is enabled. |
+
+#### 3.2 Input Splits
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| input.split_size | 1048576 (1 MB) | The input split size in bytes. |
+| input.split_max_splits | 10000000 | The maximum number of input splits. |
+| input.split_page_size | 500 | The page size for streamed load input split data. |
+| input.split_fetch_timeout | 300 | The timeout in seconds to fetch input splits. |
+
+#### 3.3 Input Processing
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| input.filter_class | org.apache.hugegraph.computer.core.input.filter.DefaultInputFilter | The class to create input-filter object. Input-filter is used to filter vertex edges according to user needs. |
+| input.edge_direction | OUT | The direction of edges to load, allowed values: [OUT, IN, BOTH]. When the value is BOTH, edges in both OUT and IN directions will be loaded. |
+| input.edge_freq | MULTIPLE | The frequency of edges that can exist between a pair of vertices, allowed values: [SINGLE, SINGLE_PER_LABEL, MULTIPLE]. SINGLE means only one edge can exist between a pair of vertices (identified by sourceId + targetId); SINGLE_PER_LABEL means each edge label can have one edge between a pair of vertices (identified by sourceId + edgeLabel + targetId); MULTIPLE means many edges can exist between a pair of vertices (identified by sourceId + edgeLabel + sortVa [...]
+| input.max_edges_in_one_vertex | 200 | The maximum number of adjacent edges allowed to be attached to a vertex. The adjacent edges will be stored and transferred together as a batch unit. |
+
+#### 3.4 Input Performance
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| input.send_thread_nums | 4 | The number of threads for parallel sending of vertices or edges. |
+
+---
+
+### 4. Snapshot & Storage Configuration
+
+HugeGraph-Computer supports snapshot functionality to save vertex/edge partitions to local storage or MinIO object storage, enabling checkpoint recovery or accelerating repeated computations.
+
+#### 4.1 Basic Snapshot Configuration
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| snapshot.write | false | Whether to write snapshots of input vertex/edge partitions. |
+| snapshot.load | false | Whether to load from snapshots of vertex/edge partitions. |
+| snapshot.name | "" (empty) | User-defined snapshot name to distinguish different snapshots. |
+
+#### 4.2 MinIO Integration (Optional)
+
+MinIO can be used as a distributed object storage backend for snapshots in K8s deployments.
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| snapshot.minio_endpoint | "" (empty) | MinIO service endpoint (e.g., `http://minio:9000`). Required when using MinIO. |
+| snapshot.minio_access_key | minioadmin | MinIO access key for authentication. |
+| snapshot.minio_secret_key | minioadmin | MinIO secret key for authentication. |
+| snapshot.minio_bucket_name | "" (empty) | MinIO bucket name for storing snapshot data. |
+
+**Usage Scenarios:**
+- **Checkpoint Recovery**: Resume from snapshots after job failures, avoiding data reloading
+- **Repeated Computations**: Load data from snapshots when running the same algorithm multiple times
+- **A/B Testing**: Save multiple snapshot versions of the same dataset to test different algorithm parameters
+
+**Example: Local Snapshot** (in `computer.properties`):
+```properties
+snapshot.write=true
+snapshot.name=pagerank-snapshot-20260201
+```
+
+**Example: MinIO Snapshot** (in K8s CRD `computerConf`):
+```yaml
+computerConf:
+ snapshot.write: "true"
+ snapshot.name: "pagerank-snapshot-v1"
+ snapshot.minio_endpoint: "http://minio:9000"
+ snapshot.minio_access_key: "my-access-key"
+ snapshot.minio_secret_key: "my-secret-key"
+ snapshot.minio_bucket_name: "hugegraph-snapshots"
+```
+
+---
+
+### 5. Worker & Master Configuration
+
+Configuration for worker and master computation logic.
+
+#### 5.1 Master Configuration
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| master.computation_class | org.apache.hugegraph.computer.core.master.DefaultMasterComputation | Master-computation is computation that can determine whether to continue to the next superstep. It runs at the end of each superstep on the master. |
+
+#### 5.2 Worker Computation
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| worker.computation_class | org.apache.hugegraph.computer.core.config.Null | The class to create worker-computation object. Worker-computation is used to compute each vertex in each superstep. |
+| worker.combiner_class | org.apache.hugegraph.computer.core.config.Null | Combiner can combine messages into one value for a vertex. For example, PageRank algorithm can combine messages of a vertex to a sum value. |
+| worker.partitioner | org.apache.hugegraph.computer.core.graph.partition.HashPartitioner | The partitioner that decides which partition a vertex should be in, and which worker a partition should be in. |
+
+#### 5.3 Worker Combiners
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| worker.vertex_properties_combiner_class | org.apache.hugegraph.computer.core.combiner.OverwritePropertiesCombiner | The combiner can combine several properties of the same vertex into one properties at input step. |
+| worker.edge_properties_combiner_class | org.apache.hugegraph.computer.core.combiner.OverwritePropertiesCombiner | The combiner can combine several properties of the same edge into one properties at input step. |
+
+#### 5.4 Worker Buffers
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| worker.received_buffers_bytes_limit | 104857600 (100 MB) | The limit bytes of buffers of received data. The total size of all buffers can't exceed this limit. If received buffers reach this limit, they will be merged into a file (spill to disk). |
+| worker.write_buffer_capacity | 52428800 (50 MB) | The initial size of write buffer that used to store vertex or message. |
+| worker.write_buffer_threshold | 52428800 (50 MB) | The threshold of write buffer. Exceeding it will trigger sorting. The write buffer is used to store vertex or message. |
+
+#### 5.5 Worker Data & Timeouts
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| worker.data_dirs | [jobs] | The directories separated by ',' that received vertices and messages can persist into. |
+| worker.wait_sort_timeout | 600000 (10 minutes) | The max timeout (in ms) for message-handler to wait for sort-thread to sort one batch of buffers. |
+| worker.wait_finish_messages_timeout | 86400000 (24 hours) | The max timeout (in ms) for message-handler to wait for finish-message of all workers. |
+
+---
+
+### 6. I/O & Output Configuration
+
+Configuration for output computation results.
+
+#### 6.1 Output Class & Result
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| output.output_class | org.apache.hugegraph.computer.core.output.LogOutput | The class to output the computation result of each vertex. Called after iteration computation. |
+| output.result_name | value | The value is assigned dynamically by #name() of instance created by WORKER_COMPUTATION_CLASS. |
+| output.result_write_type | OLAP_COMMON | The result write-type to output to HugeGraph, allowed values: [OLAP_COMMON, OLAP_SECONDARY, OLAP_RANGE]. |
+
+#### 6.2 Output Behavior
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| output.with_adjacent_edges | false | Whether to output the adjacent edges of the vertex. |
+| output.with_vertex_properties | false | Whether to output the properties of the vertex. |
+| output.with_edge_properties | false | Whether to output the properties of the edge. |
+
+#### 6.3 Batch Output
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| output.batch_size | 500 | The batch size of output. |
+| output.batch_threads | 1 | The number of threads used for batch output. |
+| output.single_threads | 1 | The number of threads used for single output. |
+
+#### 6.4 HDFS Output
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| output.hdfs_url | hdfs://127.0.0.1:9000 | The HDFS URL for output. |
+| output.hdfs_user | hadoop | The HDFS user for output. |
+| output.hdfs_path_prefix | /hugegraph-computer/results | The directory of HDFS output results. |
+| output.hdfs_delimiter | , (comma) | The delimiter of HDFS output. |
+| output.hdfs_merge_partitions | true | Whether to merge output files of multiple partitions. |
+| output.hdfs_replication | 3 | The replication number of HDFS. |
+| output.hdfs_core_site_path | "" (empty) | The HDFS core site path. |
+| output.hdfs_site_path | "" (empty) | The HDFS site path. |
+| output.hdfs_kerberos_enable | false | Whether Kerberos authentication is enabled for HDFS. |
+| output.hdfs_kerberos_principal | "" (empty) | The HDFS principal for Kerberos authentication. |
+| output.hdfs_kerberos_keytab | "" (empty) | The HDFS keytab file for Kerberos authentication. |
+| output.hdfs_krb5_conf | /etc/krb5.conf | Kerberos configuration file path. |
+
+#### 6.5 Retry & Timeout
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| output.retry_times | 3 | The retry times when output fails. |
+| output.retry_interval | 10 | The retry interval (in seconds) when output fails. |
+| output.thread_pool_shutdown_timeout | 60 | The timeout (in seconds) of output thread pool shutdown. |
+
+---
+
+### 7. Network & Transport Configuration
+
+Configuration for network communication between workers and master.
+
+#### 7.1 Server Configuration
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| transport.server_host | 127.0.0.1 | 🔒 **Managed by system** The server hostname or IP to listen on to transfer data. Do not modify manually. |
+| transport.server_port | 0 | 🔒 **Managed by system** The server port to listen on to transfer data. The system will assign a random port if set to 0. Do not modify manually. |
+| transport.server_threads | 4 | The number of transport threads for server. |
+
+#### 7.2 Client Configuration
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| transport.client_threads | 4 | The number of transport threads for client. |
+| transport.client_connect_timeout | 3000 | The timeout (in ms) of client connect to server. |
+
+#### 7.3 Protocol Configuration
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| transport.provider_class | org.apache.hugegraph.computer.core.network.netty.NettyTransportProvider | The transport provider, currently only supports Netty. |
+| transport.io_mode | AUTO | The network IO mode, allowed values: [NIO, EPOLL, AUTO]. AUTO means selecting the appropriate mode automatically. |
+| transport.tcp_keep_alive | true | Whether to enable TCP keep-alive. |
+| transport.transport_epoll_lt | false | Whether to enable EPOLL level-trigger (only effective when io_mode=EPOLL). |
+
+#### 7.4 Buffer Configuration
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| transport.send_buffer_size | 0 | The size of socket send-buffer in bytes. 0 means using system default value. |
+| transport.receive_buffer_size | 0 | The size of socket receive-buffer in bytes. 0 means using system default value. |
+| transport.write_buffer_high_mark | 67108864 (64 MB) | The high water mark for write buffer in bytes. It will trigger sending unavailable if the number of queued bytes > write_buffer_high_mark. |
+| transport.write_buffer_low_mark | 33554432 (32 MB) | The low water mark for write buffer in bytes. It will trigger sending available if the number of queued bytes < write_buffer_low_mark. |
+
+#### 7.5 Flow Control
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| transport.max_pending_requests | 8 | The max number of client unreceived ACKs. It will trigger sending unavailable if the number of unreceived ACKs >= max_pending_requests. |
+| transport.min_pending_requests | 6 | The minimum number of client unreceived ACKs. It will trigger sending available if the number of unreceived ACKs < min_pending_requests. |
+| transport.min_ack_interval | 200 | The minimum interval (in ms) of server reply ACK. |
+
+#### 7.6 Timeouts
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| transport.close_timeout | 10000 | The timeout (in ms) of close server or close client. |
+| transport.sync_request_timeout | 10000 | The timeout (in ms) to wait for response after sending sync-request. |
+| transport.finish_session_timeout | 0 | The timeout (in ms) to finish session. 0 means using (transport.sync_request_timeout × transport.max_pending_requests). |
+| transport.write_socket_timeout | 3000 | The timeout (in ms) to write data to socket buffer. |
+| transport.server_idle_timeout | 360000 (6 minutes) | The max timeout (in ms) of server idle. |
+
+#### 7.7 Heartbeat
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| transport.heartbeat_interval | 20000 (20 seconds) | The minimum interval (in ms) between heartbeats on client side. |
+| transport.max_timeout_heartbeat_count | 120 | The maximum times of timeout heartbeat on client side. If the number of timeouts waiting for heartbeat response continuously > max_timeout_heartbeat_count, the channel will be closed from client side. |
+
+#### 7.8 Advanced Network Settings
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| transport.max_syn_backlog | 511 | The capacity of SYN queue on server side. 0 means using system default value. |
+| transport.recv_file_mode | true | Whether to enable receive buffer-file mode. It will receive buffer and write to file from socket using zero-copy if enabled. **Note**: Requires OS support for zero-copy (e.g., Linux sendfile/splice). |
+| transport.network_retries | 3 | The number of retry attempts for network communication if network is unstable. |
+
+---
+
+### 8. Storage & Persistence Configuration
+
+Configuration for HGKV (HugeGraph Key-Value) storage engine and value files.
+
+#### 8.1 HGKV Configuration
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| hgkv.max_file_size | 2147483648 (2 GB) | The max number of bytes in each HGKV file. |
+| hgkv.max_data_block_size | 65536 (64 KB) | The max byte size of HGKV file data block. |
+| hgkv.max_merge_files | 10 | The max number of files to merge at one time. |
+| hgkv.temp_file_dir | /tmp/hgkv | This folder is used to store temporary files during the file merging process. |
+
+#### 8.2 Value File Configuration
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| valuefile.max_segment_size | 1073741824 (1 GB) | The max number of bytes in each segment of value-file. |
+
+---
+
+### 9. BSP & Coordination Configuration
+
+Configuration for Bulk Synchronous Parallel (BSP) protocol and etcd coordination.
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| bsp.etcd_endpoints | http://localhost:2379 | 🔒 **Managed by system in K8s** The endpoints to access etcd. For multiple endpoints, use comma-separated list: `http://host1:port1,http://host2:port2`. Do not modify manually in K8s deployments. |
+| bsp.max_super_step | 10 (packaged: 2) | The max super step of the algorithm. |
+| bsp.register_timeout | 300000 (packaged: 100000) | The max timeout (in ms) to wait for master and workers to register. |
+| bsp.wait_workers_timeout | 86400000 (24 hours) | The max timeout (in ms) to wait for workers BSP event. |
+| bsp.wait_master_timeout | 86400000 (24 hours) | The max timeout (in ms) to wait for master BSP event. |
+| bsp.log_interval | 30000 (30 seconds) | The log interval (in ms) to print the log while waiting for BSP event. |
+
+---
+
+### 10. Performance Tuning Configuration
+
+Configuration for performance optimization.
+
+| config option | default value | description |
+|---------------|---------------|-------------|
+| allocator.max_vertices_per_thread | 10000 | Maximum number of vertices per thread processed in each memory allocator. |
+| sort.thread_nums | 4 | The number of threads performing internal sorting. |
+
+---
+
+### 11. System Administration Configuration
+
+⚠️ **Configuration items managed by the system - users are prohibited from modifying these manually.**
+
+The following configuration items are automatically managed by the K8s Operator, Driver, or runtime system. Manual modification will cause cluster communication failures or job scheduling errors.
+
+| config option | managed by | description |
+|---------------|------------|-------------|
+| bsp.etcd_endpoints | K8s Operator | Automatically set to operator's etcd service address |
+| transport.server_host | Runtime | Automatically set to pod/container hostname |
+| transport.server_port | Runtime | Automatically assigned random port |
+| job.namespace | K8s Operator | Automatically set to job namespace |
+| job.id | K8s Operator | Automatically set to job ID from CRD |
+| job.workers_count | K8s Operator | Automatically set from CRD `workerInstances` |
+| rpc.server_host | Runtime | RPC server hostname (system-managed) |
+| rpc.server_port | Runtime | RPC server port (system-managed) |
+| rpc.remote_url | Runtime | RPC remote URL (system-managed) |
+
+**Why These Are Forbidden:**
+- **BSP/RPC Configuration**: Must match the actual deployed etcd/RPC services. Manual overrides break coordination.
+- **Job Configuration**: Must match K8s CRD specifications. Mismatches cause worker count errors.
+- **Transport Configuration**: Must use actual pod hostnames/ports. Manual values prevent inter-worker communication.
+
+---
### K8s Operator Config Options
> NOTE: Option needs to be converted through environment variable settings, e.g. k8s.internal_etcd_url => INTERNAL_ETCD_URL
-| config option | default value | description |
-|------------------------------|---------------------------|---------------------------------------------------------------------------------------------------------------------------------|
-| k8s.auto_destroy_pod | true | Whether to automatically destroy all pods when the job is completed or failed. |
-| k8s.close_reconciler_timeout | 120 | The max timeout(in ms) to close reconciler. |
-| k8s.internal_etcd_url | http://127.0.0.1:2379 | The internal etcd url for operator system. |
-| k8s.max_reconcile_retry | 3 | The max retry times of reconcile. |
-| k8s.probe_backlog | 50 | The maximum backlog for serving health probes. |
-| k8s.probe_port | 9892 | The value is the port that the controller bind to for serving health probes. |
-| k8s.ready_check_internal | 1000 | The time interval(ms) of check ready. |
-| k8s.ready_timeout | 30000 | The max timeout(in ms) of check ready. |
-| k8s.reconciler_count | 10 | The max number of reconciler thread. |
-| k8s.resync_period | 600000 | The minimum frequency at which watched resources are reconciled. |
-| k8s.timezone | Asia/Shanghai | The timezone of computer job and operator. |
-| k8s.watch_namespace | hugegraph-computer-system | The value is watch custom resources in the namespace, ignore other namespaces, the '*' means is all namespaces will be watched. |
+| config option | default value | description |
+|------------------------------|---------------------------|----------------------------------------------------------------------------------------------------------------------------------|
+| k8s.auto_destroy_pod | true | Whether to automatically destroy all pods when the job is completed or failed. |
+| k8s.close_reconciler_timeout | 120 | The max timeout (in ms) to close reconciler. |
+| k8s.internal_etcd_url | http://127.0.0.1:2379 | The internal etcd URL for operator system. |
+| k8s.max_reconcile_retry | 3 | The max retry times of reconcile. |
+| k8s.probe_backlog | 50 | The maximum backlog for serving health probes. |
+| k8s.probe_port | 9892 | The port that the controller binds to for serving health probes. |
+| k8s.ready_check_internal | 1000 | The time interval (ms) of check ready. |
+| k8s.ready_timeout | 30000 | The max timeout (in ms) of check ready. |
+| k8s.reconciler_count | 10 | The max number of reconciler threads. |
+| k8s.resync_period | 600000 | The minimum frequency at which watched resources are reconciled. |
+| k8s.timezone | Asia/Shanghai | The timezone of computer job and operator. |
+| k8s.watch_namespace | hugegraph-computer-system | The namespace to watch custom resources in. Use '*' to watch all namespaces. |
+
+---
### HugeGraph-Computer CRD
> CRD: https://github.com/apache/hugegraph-computer/blob/master/computer-k8s-operator/manifest/hugegraph-computer-crd.v1.yaml
-| spec | default value | description | required |
+| spec | default value | description | required |
|-----------------|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|
-| algorithmName | | The name of algorithm. | true |
-| jobId | | The job id. | true |
-| image | | The image of algorithm. | true |
-| computerConf | | The map of computer config options. | true |
-| workerInstances | | The number of worker instances, it will instead the 'job.workers_count' option. | true |
-| pullPolicy | Always | The pull-policy of image, detail please refer to: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy | false |
-| pullSecrets | | The pull-secrets of Image, detail please refer to: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | false |
-| masterCpu | | The cpu limit of master, the unit can be 'm' or without unit detail please refer to:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu) | false |
-| workerCpu | | The cpu limit of worker, the unit can be 'm' or without unit detail please refer to:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu) | false |
-| masterMemory | | The memory limit of master, the unit can be one of Ei、Pi、Ti、Gi、Mi、Ki detail please refer to:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory) | false |
-| workerMemory | | The memory limit of worker, the unit can be one of Ei、Pi、Ti、Gi、Mi、Ki detail please refer to:[https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory) | false |
-| log4jXml | | The content of log4j.xml for computer job. | false |
-| jarFile | | The jar path of computer algorithm. | false |
-| remoteJarUri | | The remote jar uri of computer algorithm, it will overlay algorithm image. | false |
-| jvmOptions | | The java startup parameters of computer job. | false |
-| envVars | | please refer to: https://kubernetes.io/docs/tasks/inject-data-application/define-interdependent-environment-variables/ | false |
-| envFrom | | please refer to: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | false |
-| masterCommand | bin/start-computer.sh | The run command of master, equivalent to 'Entrypoint' field of Docker. | false |
-| masterArgs | ["-r master", "-d k8s"] | The run args of master, equivalent to 'Cmd' field of Docker. | false |
-| workerCommand | bin/start-computer.sh | The run command of worker, equivalent to 'Entrypoint' field of Docker. | false |
-| workerArgs | ["-r worker", "-d k8s"] | The run args of worker, equivalent to 'Cmd' field of Docker. | false |
-| volumes | | Please refer to: https://kubernetes.io/docs/concepts/storage/volumes/ | false |
-| volumeMounts | | Please refer to: https://kubernetes.io/docs/concepts/storage/volumes/ | false |
-| secretPaths | | The map of k8s-secret name and mount path. | false |
-| configMapPaths | | The map of k8s-configmap name and mount path. | false |
-| podTemplateSpec | | Please refer to: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-template-v1/#PodTemplateSpec | false |
-| securityContext | | Please refer to: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | false |
+| algorithmName | | The name of algorithm. | true |
+| jobId | | The job id. | true |
+| image | | The image of algorithm. | true |
+| computerConf | | The map of computer config options. | true |
+| workerInstances | | The number of worker instances, it will override the 'job.workers_count' option. | true |
+| pullPolicy | Always | The pull-policy of image, detail please refer to: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy | false |
+| pullSecrets | | The pull-secrets of Image, detail please refer to: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | false |
+| masterCpu | | The cpu limit of master, the unit can be 'm' or without unit detail please refer to: [https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu) | false |
+| workerCpu | | The cpu limit of worker, the unit can be 'm' or without unit detail please refer to: [https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu) | false |
+| masterMemory | | The memory limit of master, the unit can be one of Ei、Pi、Ti、Gi、Mi、Ki detail please refer to: [https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory) | false |
+| workerMemory | | The memory limit of worker, the unit can be one of Ei、Pi、Ti、Gi、Mi、Ki detail please refer to: [https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory) | false |
+| log4jXml | | The content of log4j.xml for computer job. | false |
+| jarFile | | The jar path of computer algorithm. | false |
+| remoteJarUri | | The remote jar uri of computer algorithm, it will overlay algorithm image. | false |
+| jvmOptions | | The java startup parameters of computer job. | false |
+| envVars | | please refer to: https://kubernetes.io/docs/tasks/inject-data-application/define-interdependent-environment-variables/ | false |
+| envFrom | | please refer to: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | false |
+| masterCommand | bin/start-computer.sh | The run command of master, equivalent to 'Entrypoint' field of Docker. | false |
+| masterArgs | ["-r master", "-d k8s"] | The run args of master, equivalent to 'Cmd' field of Docker. | false |
+| workerCommand | bin/start-computer.sh | The run command of worker, equivalent to 'Entrypoint' field of Docker. | false |
+| workerArgs | ["-r worker", "-d k8s"] | The run args of worker, equivalent to 'Cmd' field of Docker. | false |
+| volumes | | Please refer to: https://kubernetes.io/docs/concepts/storage/volumes/ | false |
+| volumeMounts | | Please refer to: https://kubernetes.io/docs/concepts/storage/volumes/ | false |
+| secretPaths | | The map of k8s-secret name and mount path. | false |
+| configMapPaths | | The map of k8s-configmap name and mount path. | false |
+| podTemplateSpec | | Please refer to: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-template-v1/#PodTemplateSpec | false |
+| securityContext | | Please refer to: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | false |
+
+---
### KubeDriver Config Options
-| config option | default value | description |
+| config option | default value | description |
|----------------------------------|------------------------------------------|-----------------------------------------------------------|
-| k8s.build_image_bash_path || The path of command used to build image. |
-| k8s.enable_internal_algorithm | true | Whether enable internal algorithm. |
-| k8s.framework_image_url | hugegraph/hugegraph-computer:latest | The image url of computer framework. |
-| k8s.image_repository_password || The password for login image repository. |
-| k8s.image_repository_registry || The address for login image repository. |
-| k8s.image_repository_url | hugegraph/hugegraph-computer | The url of image repository. |
-| k8s.image_repository_username || The username for login image repository. |
-| k8s.internal_algorithm | [pageRank] | The name list of all internal algorithm. |
-| k8s.internal_algorithm_image_url | hugegraph/hugegraph-computer:latest | The image url of internal algorithm. |
-| k8s.jar_file_dir | /cache/jars/ | The directory where the algorithm jar to upload location. |
-| k8s.kube_config | ~/.kube/config | The path of k8s config file. |
-| k8s.log4j_xml_path || The log4j.xml path for computer job. |
-| k8s.namespace | hugegraph-computer-system | The namespace of hugegraph-computer system. |
-| k8s.pull_secret_names | [] | The names of pull-secret for pulling image. |
+| k8s.build_image_bash_path | | The path of command used to build image. |
+| k8s.enable_internal_algorithm | true | Whether enable internal algorithm. |
+| k8s.framework_image_url | hugegraph/hugegraph-computer:latest | The image url of computer framework. |
+| k8s.image_repository_password | | The password for login image repository. |
+| k8s.image_repository_registry | | The address for login image repository. |
+| k8s.image_repository_url | hugegraph/hugegraph-computer | The url of image repository. |
+| k8s.image_repository_username | | The username for login image repository. |
+| k8s.internal_algorithm | [pageRank] | The name list of all internal algorithm. **Note**: Algorithm names use camelCase here (e.g., `pageRank`), but algorithm implementations return underscore_case (e.g., `page_rank`). |
+| k8s.internal_algorithm_image_url | hugegraph/hugegraph-computer:latest | The image url of internal algorithm. |
+| k8s.jar_file_dir | /cache/jars/ | The directory where the algorithm jar will be uploaded. |
+| k8s.kube_config | ~/.kube/config | The path of k8s config file. |
+| k8s.log4j_xml_path | | The log4j.xml path for computer job. |
+| k8s.namespace | hugegraph-computer-system | The namespace of hugegraph-computer system. |
+| k8s.pull_secret_names | [] | The names of pull-secret for pulling image. |
diff --git a/content/en/docs/quickstart/computing/hugegraph-computer.md b/content/en/docs/quickstart/computing/hugegraph-computer.md
index 26924c61..dce2b07d 100644
--- a/content/en/docs/quickstart/computing/hugegraph-computer.md
+++ b/content/en/docs/quickstart/computing/hugegraph-computer.md
@@ -63,7 +63,36 @@ cd hugegraph-computer
mvn clean package -DskipTests
```
-#### 3.1.3 Start master node
+#### 3.1.3 Configure computer.properties
+
+Edit `conf/computer.properties` to configure the connection to HugeGraph-Server and etcd:
+
+```properties
+# Job configuration
+job.id=local_pagerank_001
+job.partitions_count=4
+
+# HugeGraph connection (✅ Correct configuration keys)
+hugegraph.url=http://localhost:8080
+hugegraph.name=hugegraph
+# If authentication is enabled on HugeGraph-Server
+hugegraph.username=
+hugegraph.password=
+
+# BSP coordination (✅ Correct key: bsp.etcd_endpoints)
+bsp.etcd_endpoints=http://localhost:2379
+bsp.max_super_step=10
+
+# Algorithm parameters (⚠️ Required)
+algorithm.params_class=org.apache.hugegraph.computer.algorithm.centrality.pagerank.PageRankParams
+```
+
+> **Important Configuration Notes:**
+> - Use `bsp.etcd_endpoints` (NOT `bsp.etcd.url`) for etcd connection
+> - `algorithm.params_class` is required for all algorithms
+> - For multiple etcd endpoints, use comma-separated list: `http://host1:2379,http://host2:2379`
+
+#### 3.1.4 Start master node
> You can use `-c` parameter specify the configuration file, more computer config please see:[Computer Config Options](/docs/config/config-computer#computer-config-options)
@@ -72,15 +101,15 @@ cd hugegraph-computer
bin/start-computer.sh -d local -r master
```
-#### 3.1.4 Start worker node
+#### 3.1.5 Start worker node
```bash
bin/start-computer.sh -d local -r worker
```
-#### 3.1.5 Query algorithm results
+#### 3.1.6 Query algorithm results
-3.1.5.1 Enable `OLAP` index query for server
+3.1.6.1 Enable `OLAP` index query for server
If the OLAP index is not enabled, it needs to be enabled. More reference: [modify-graphs-read-mode](/docs/clients/restful-api/graphs/#634-modify-graphs-read-mode-this-operation-requires-administrator-privileges)
@@ -90,12 +119,14 @@ PUT http://localhost:8080/graphs/hugegraph/graph_read_mode
"ALL"
```
-3.1.5.2 Query `page_rank` property value:
+3.1.6.2 Query `page_rank` property value:
```bash
curl "http://localhost:8080/graphs/hugegraph/graph/vertices?page&limit=3" | gunzip
```
+---
+
### 3.2 Run PageRank algorithm in Kubernetes
> To run an algorithm with HugeGraph-Computer, you need to deploy HugeGraph-Server first
@@ -141,6 +172,8 @@ hugegraph-computer-operator-etcd-28lm67jxk5 1/1 Runnin
>
> More computer config please see: [Computer Config Options](/docs/config/config-computer#computer-config-options)
+**Basic Example:**
+
```yaml
cat <<EOF | kubectl apply --filename -
apiVersion: hugegraph.apache.org/v1
@@ -150,21 +183,100 @@ metadata:
name: &jobName pagerank-sample
spec:
jobId: *jobName
- algorithmName: page_rank
- image: hugegraph/hugegraph-computer:latest # algorithm image url
- jarFile: /hugegraph/hugegraph-computer/algorithm/builtin-algorithm.jar # algorithm jar path
+ algorithmName: page_rank # ✅ Correct: use underscore format (matches algorithm implementation)
+ image: hugegraph/hugegraph-computer:latest
+ jarFile: /hugegraph/hugegraph-computer/algorithm/builtin-algorithm.jar
+ pullPolicy: Always
+ workerCpu: "4"
+ workerMemory: "4Gi"
+ workerInstances: 5
+ computerConf:
+ job.partitions_count: "20"
+ algorithm.params_class: org.apache.hugegraph.computer.algorithm.centrality.pagerank.PageRankParams
+ hugegraph.url: http://${hugegraph-server-host}:${hugegraph-server-port}
+ hugegraph.name: hugegraph
+EOF
+```
+
+**Complete Example with Advanced Features:**
+
+```yaml
+cat <<EOF | kubectl apply --filename -
+apiVersion: hugegraph.apache.org/v1
+kind: HugeGraphComputerJob
+metadata:
+ namespace: hugegraph-computer-operator-system
+ name: &jobName pagerank-advanced
+spec:
+ jobId: *jobName
+ algorithmName: page_rank # ✅ Correct: underscore format
+ image: hugegraph/hugegraph-computer:latest
+ jarFile: /hugegraph/hugegraph-computer/algorithm/builtin-algorithm.jar
pullPolicy: Always
+
+ # Resource limits
+ masterCpu: "2"
+ masterMemory: "2Gi"
workerCpu: "4"
workerMemory: "4Gi"
workerInstances: 5
+
+ # JVM options
+ jvmOptions: "-Xmx3g -Xms3g -XX:+UseG1GC"
+
+ # Environment variables (optional)
+ envVars:
+ - name: REMOTE_JAR_URI
+ value: "http://example.com/custom-algorithm.jar" # Download custom algorithm JAR
+ - name: LOG_LEVEL
+ value: "INFO"
+
+ # Computer configuration
computerConf:
+ # Job settings
job.partitions_count: "20"
+
+ # Algorithm parameters (⚠️ Required)
algorithm.params_class: org.apache.hugegraph.computer.algorithm.centrality.pagerank.PageRankParams
- hugegraph.url: http://${hugegraph-server-host}:${hugegraph-server-port} # hugegraph server url
- hugegraph.name: hugegraph # hugegraph graph name
+ page_rank.alpha: "0.85" # PageRank damping factor
+
+ # HugeGraph connection
+ hugegraph.url: http://hugegraph-server:8080
+ hugegraph.name: hugegraph
+ hugegraph.username: "" # Fill if authentication is enabled
+ hugegraph.password: ""
+
+ # BSP configuration (⚠️ System-managed in K8s, do not override)
+ # bsp.etcd_endpoints is automatically set by operator
+ bsp.max_super_step: "20"
+ bsp.log_interval: "30000"
+
+ # Snapshot configuration (optional)
+ snapshot.write: "true" # Enable snapshot writing
+ snapshot.load: "false" # Do not load from snapshot this time
+ snapshot.name: "pagerank-snapshot-v1"
+ snapshot.minio_endpoint: "http://minio:9000"
+ snapshot.minio_access_key: "minioadmin"
+ snapshot.minio_secret_key: "minioadmin"
+ snapshot.minio_bucket_name: "hugegraph-snapshots"
+
+ # Output configuration
+ output.result_name: "page_rank"
+ output.batch_size: "500"
+ output.with_adjacent_edges: "false"
EOF
```
+**Configuration Notes:**
+
+| Configuration Key | ⚠️ Important Notes |
+|-------------------|-------------------|
+| `algorithmName` | Must use `page_rank` (underscore format), matches the algorithm's `name()` method return value |
+| `bsp.etcd_endpoints` | **System-managed in K8s** - automatically set by operator, do not override in `computerConf` |
+| `algorithm.params_class` | **Required** - must specify for all algorithms |
+| `REMOTE_JAR_URI` | Optional environment variable to download custom algorithm JAR from remote URL |
+| `snapshot.*` | Optional - enable snapshots for checkpoint recovery or repeated computations |
+
#### 3.2.6 Show job
```bash
@@ -200,6 +312,189 @@ kubectl get event --field-selector reason=ComputerJobSucceed --field-selector in
If the output to `Hugegraph-Server` is consistent with Locally, if output to `HDFS`, please check the result file in the directory of `/hugegraph-computer/results/{jobId}` directory.
+---
+
+## 3.3 Local Mode vs Kubernetes Mode
+
+Understanding the differences helps you choose the right deployment mode for your use case.
+
+| Feature | Local Mode | Kubernetes Mode |
+|---------|------------|-----------------|
+| **Configuration** | `conf/computer.properties` file | CRD YAML `computerConf` field |
+| **Etcd Management** | Manual deployment of external etcd | Operator auto-deploys etcd StatefulSet |
+| **Worker Scaling** | Manual start of multiple processes | CRD `workerInstances` field auto-scales |
+| **Resource Isolation** | Shared host resources | Pod-level CPU/Memory limits |
+| **Remote JAR** | `JAR_FILE_PATH` environment variable | CRD `remoteJarUri` or `envVars.REMOTE_JAR_URI` |
+| **Log Viewing** | Local `logs/` directory | `kubectl logs` command |
+| **Fault Recovery** | Manual process restart | K8s auto-restarts failed pods |
+| **Use Cases** | Development, testing, small datasets | Production, large-scale data |
+
+**Local Mode Prerequisites:**
+- Java 11+
+- HugeGraph-Server running on localhost:8080
+- Etcd running on localhost:2379
+
+**K8s Mode Prerequisites:**
+- Kubernetes cluster (version 1.16+)
+- HugeGraph-Server accessible from cluster
+- HugeGraph-Computer Operator installed
+
+**Configuration Key Differences:**
+
+```properties
+# Local Mode (computer.properties)
+bsp.etcd_endpoints=http://localhost:2379 # ✅ User-configured
+job.workers_count=4 # User-configured
+```
+
+```yaml
+# K8s Mode (CRD)
+spec:
+ workerInstances: 5 # Overrides job.workers_count
+ computerConf:
+ # bsp.etcd_endpoints is auto-set by operator, do NOT configure
+ job.partitions_count: "20"
+```
+
+---
+
+## 3.4 Common Troubleshooting
+
+### 3.4.1 Configuration Errors
+
+**Error: "Failed to connect to etcd"**
+
+**Symptoms:** Master or Worker cannot connect to etcd
+
+**Local Mode Solutions:**
+```bash
+# Check configuration key name (common mistake)
+grep "bsp.etcd_endpoints" conf/computer.properties
+# Should output: bsp.etcd_endpoints=http://localhost:2379
+
+# ❌ WRONG: bsp.etcd.url (old/incorrect key)
+# ✅ CORRECT: bsp.etcd_endpoints
+
+# Test etcd connectivity
+curl http://localhost:2379/version
+```
+
+**K8s Mode Solutions:**
+```bash
+# Check Operator etcd service
+kubectl get svc hugegraph-computer-operator-etcd -n hugegraph-computer-operator-system
+
+# Verify etcd pod is running
+kubectl get pods -n hugegraph-computer-operator-system -l app=hugegraph-computer-operator-etcd
+# Should show: Running status
+
+# Test connectivity from worker pod
+kubectl exec -it pagerank-sample-worker-0 -n hugegraph-computer-operator-system -- \
+ curl http://hugegraph-computer-operator-etcd:2379/version
+```
+
+**Error: "Algorithm class not found"**
+
+**Symptoms:** Cannot find algorithm implementation class
+
+**Cause:** Incorrect `algorithmName` format
+
+```yaml
+# ❌ WRONG formats:
+algorithmName: pageRank # Camel case
+algorithmName: PageRank # Title case
+
+# ✅ CORRECT format (matches PageRank.name() return value):
+algorithmName: page_rank # Underscore lowercase
+```
+
+**Verification:**
+```bash
+# Check algorithm implementation in source code
+# File: computer-algorithm/.../PageRank.java
+# Method: public String name() { return "page_rank"; }
+```
+
+**Error: "Required option 'algorithm.params_class' is missing"**
+
+**Solution:**
+```yaml
+computerConf:
+ algorithm.params_class: org.apache.hugegraph.computer.algorithm.centrality.pagerank.PageRankParams # ⚠️ Required
+```
+
+### 3.4.2 K8s Deployment Issues
+
+**Issue: REMOTE_JAR_URI not working**
+
+**Solution:**
+```yaml
+spec:
+ envVars:
+ - name: REMOTE_JAR_URI
+ value: "http://example.com/my-algorithm.jar"
+```
+
+**Issue: Etcd connection timeout in K8s**
+
+**Check Operator etcd:**
+```bash
+# Verify etcd is running
+kubectl get pods -n hugegraph-computer-operator-system -l app=hugegraph-computer-operator-etcd
+# Should show: Running
+
+# From worker pod, test etcd connectivity
+kubectl exec -it pagerank-sample-worker-0 -n hugegraph-computer-operator-system -- \
+ curl http://hugegraph-computer-operator-etcd:2379/version
+```
+
+**Issue: Snapshot/MinIO configuration problems**
+
+**Verify MinIO service:**
+```bash
+# Test MinIO reachability
+kubectl run -it --rm debug --image=alpine --restart=Never -- sh
+wget -O- http://minio:9000/minio/health/live
+
+# Test bucket permissions (requires MinIO client)
+mc config host add myminio http://minio:9000 minioadmin minioadmin
+mc ls myminio/hugegraph-snapshots
+```
+
+### 3.4.3 Job Status Checks
+
+**Check job overall status:**
+```bash
+kubectl get hcjob pagerank-sample -n hugegraph-computer-operator-system
+# Output example:
+# NAME JOBSTATUS SUPERSTEP MAXSUPERSTEP SUPERSTEPSTAT
+# pagerank-sample Running 5 20 COMPUTING
+```
+
+**Check detailed events:**
+```bash
+kubectl describe hcjob pagerank-sample -n hugegraph-computer-operator-system
+```
+
+**Check failure reasons:**
+```bash
+kubectl get events --field-selector reason=ComputerJobFailed \
+ --field-selector involvedObject.name=pagerank-sample \
+ -n hugegraph-computer-operator-system
+```
+
+**Real-time master logs:**
+```bash
+kubectl logs -f -l component=pagerank-sample-master -n hugegraph-computer-operator-system
+```
+
+**All worker logs:**
+```bash
+kubectl logs -l component=pagerank-sample-worker -n hugegraph-computer-operator-system --all-containers=true
+```
+
+---
+
## 4. Built-In algorithms document
### 4.1 Supported algorithms list: