文档 1.7 版本已不再积极维护,你当前浏览的是一份归档快照。
最新文档请参阅 最新版本 。
Server 启动指南 1 概述 配置文件的目录为 hugegraph-release/conf,所有关于服务和图本身的配置都在此目录下。
主要的配置文件包括:gremlin-server.yaml、rest-server.properties 和 hugegraph.properties
HugeGraphServer 内部集成了 GremlinServer 和 RestServer,而 gremlin-server.yaml 和 rest-server.properties 就是用来配置这两个 Server 的。
GremlinServer :GremlinServer 接收 Gremlin 请求并调用图引擎。RestServer:提供 RESTful API,根据不同的 HTTP 请求,调用对应的 Core API,如果用户请求体是 gremlin 语句,则会转发给 GremlinServer,实现对图数据的操作。 下面对这三个配置文件逐一介绍。
2 gremlin-server.yaml gremlin-server.yaml 的主要结构如下。示例省略了部分导入项;完整内容以发布包中的文件为准。
1 # host and port of gremlin server, need to be consistent with host and port in rest-server.properties
2 #host: 127.0.0.1
3 #port: 8182
4
5 # Gremlin 查询中的超时时间(以毫秒为单位)
6 evaluationTimeout : 30000
7
8 channelizer : org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer
9 # 不要在此处设置图形,此功能将在支持动态添加图形后再进行处理
10 graphs : {
11 }
12 scriptEngines : {
13 gremlin-groovy : {
14 staticImports : [
15 org.opencypher.gremlin.process.traversal.CustomPredicates.*',
16 org.opencypher.gremlin.traversal.CustomFunctions.*
17 ],
18 plugins : {
19 org.apache.hugegraph.plugin.HugeGraphGremlinPlugin : {},
20 org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin : {},
21 org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin : {
22 classImports : [
23 java.lang.Math,
24 org.apache.hugegraph.backend.id.IdGenerator,
25 org.apache.hugegraph.type.define.Directions,
26 org.apache.hugegraph.type.define.NodeRole,
27 org.apache.hugegraph.traversal.algorithm.CollectionPathsTraverser,
28 org.apache.hugegraph.traversal.algorithm.CountTraverser,
29 org.apache.hugegraph.traversal.algorithm.CustomizedCrosspointsTraverser,
30 org.apache.hugegraph.traversal.algorithm.CustomizePathsTraverser,
31 org.apache.hugegraph.traversal.algorithm.FusiformSimilarityTraverser,
32 org.apache.hugegraph.traversal.algorithm.HugeTraverser,
33 org.apache.hugegraph.traversal.algorithm.JaccardSimilarTraverser,
34 org.apache.hugegraph.traversal.algorithm.KneighborTraverser,
35 org.apache.hugegraph.traversal.algorithm.KoutTraverser,
36 org.apache.hugegraph.traversal.algorithm.MultiNodeShortestPathTraverser,
37 org.apache.hugegraph.traversal.algorithm.NeighborRankTraverser,
38 org.apache.hugegraph.traversal.algorithm.PathsTraverser,
39 org.apache.hugegraph.traversal.algorithm.PersonalRankTraverser,
40 org.apache.hugegraph.traversal.algorithm.SameNeighborTraverser,
41 org.apache.hugegraph.traversal.algorithm.ShortestPathTraverser,
42 org.apache.hugegraph.traversal.algorithm.SingleSourceShortestPathTraverser,
43 org.apache.hugegraph.traversal.algorithm.SubGraphTraverser,
44 org.apache.hugegraph.traversal.algorithm.TemplatePathsTraverser,
45 org.apache.hugegraph.traversal.algorithm.steps.EdgeStep,
46 org.apache.hugegraph.traversal.algorithm.steps.RepeatEdgeStep,
47 org.apache.hugegraph.traversal.algorithm.steps.WeightedEdgeStep,
48 org.apache.hugegraph.traversal.optimize.ConditionP,
49 org.apache.hugegraph.traversal.optimize.Text,
50 org.apache.hugegraph.traversal.optimize.TraversalUtil,
51 org.apache.hugegraph.util.DateUtil,
52 org.opencypher.gremlin.traversal.CustomFunctions,
53 org.opencypher.gremlin.traversal.CustomPredicate
54 ],
55 methodImports : [
56 java.lang.Math#*,
57 org.opencypher.gremlin.traversal.CustomPredicate#*,
58 org.opencypher.gremlin.traversal.CustomFunctions#*
59 ]
60 },
61 org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin : {
62 files : [ scripts/empty-sample.groovy]
63 }
64 }
65 }
66 }
67 serializers :
68 - { className : org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1,
69 config : {
70 serializeResultToString : false ,
71 ioRegistries : [ org.apache.hugegraph.io.HugeGraphIoRegistry]
72 }
73 }
74 - { className : org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0,
75 config : {
76 serializeResultToString : false ,
77 ioRegistries : [ org.apache.hugegraph.io.HugeGraphIoRegistry]
78 }
79 }
80 - { className : org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0,
81 config : {
82 serializeResultToString : false ,
83 ioRegistries : [ org.apache.hugegraph.io.HugeGraphIoRegistry]
84 }
85 }
86 - { className : org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0,
87 config : {
88 serializeResultToString : false ,
89 ioRegistries : [ org.apache.hugegraph.io.HugeGraphIoRegistry]
90 }
91 }
92 metrics : {
93 consoleReporter : {enabled : false, interval : 180000 },
94 csvReporter : {enabled : false, interval : 180000, fileName : ./metrics/gremlin-server-metrics.csv},
95 jmxReporter : {enabled : false },
96 slf4jReporter : {enabled : false, interval : 180000 },
97 gangliaReporter : {enabled : false, interval : 180000, addressingMode : MULTICAST},
98 graphiteReporter : {enabled : false, interval : 180000 }
99 }
100 maxInitialLineLength : 4096
101 maxHeaderSize : 8192
102 maxChunkSize : 8192
103 maxContentLength : 65536
104 maxAccumulationBufferComponents : 1024
105 resultIterationBatchSize : 64
106 writeBufferLowWaterMark : 32768
107 writeBufferHighWaterMark : 65536
108 ssl : {
109 enabled : false
110 } 通常只需关注 channelizer、host 和 port。图不在 Gremlin Server 的 graphs 段加载;是否读取本地图配置由 rest-server.properties 中的 graph.load_from_local_config 控制。
channelizer:默认的 WsAndHttpChannelizer 同时支持 WebSocket 和 HTTP。Gremlin-Console 使用 WebSocket,HugeGraph-Client、Loader 和 Hubble 使用 HTTP; 默认 GremlinServer 是服务在 localhost:8182,如果需要修改,配置 host、port 即可
host:部署 GremlinServer 机器的机器名或 IP,目前 HugeGraphServer 不支持分布式部署,且 GremlinServer 不直接暴露给用户; port:部署 GremlinServer 机器的端口; 同时需要在 rest-server.properties 中增加对应的配置项 gremlinserver.url=http://host:port
3 rest-server.properties 下面是可用的 rest-server.properties 示例。当前上游发布模板没有写出 graph.load_from_local_config,而源码默认值为 false;使用 conf/graphs 中的本地图配置时必须显式设为 true。
1 # bind url
2 # could use '0.0.0.0' or specified (real)IP to expose external network access
3 restserver.url = http://127.0.0.1:8080
4 #restserver.enable_graphspaces_filter=false
5 # gremlin server url, need to be consistent with host and port in gremlin-server.yaml
6 #gremlinserver.url=http://127.0.0.1:8182
7
8 graphs = ./conf/graphs
9 graph.load_from_local_config = true
10
11 # The maximum thread ratio for batch writing, only take effect if the batch.max_write_threads is 0
12 batch.max_write_ratio = 80
13 batch.max_write_threads = 0
14
15 # configuration of arthas
16 arthas.telnetPort = 8562
17 arthas.httpPort = 8561
18 arthas.ip = 127.0.0.1
19 arthas.disabledCommands = jad
20
21 # authentication configs
22 #auth.authenticator=org.apache.hugegraph.auth.StandardAuthenticator
23 # for admin password, By default, it is pa and takes effect upon the first startup
24 #auth.admin_pa=pa
25 #auth.graph_store=hugegraph
26
27 # use pd
28 # usePD=true
29
30 # slow query log
31 log.slow_query_threshold = 1000
32 # bytes of request body recorded as-is (may contain sensitive literals), 0 to disable
33 log.slow_query_body_limit = 512
34
35 # jvm(in-heap) memory usage monitor, set 1 to disable it
36 memory_monitor.threshold = 0.85
37 memory_monitor.period = 2000 restserver.url:RestServer 提供服务的 url,根据实际环境修改。如果其他 IP 地址无法访问,可以尝试修改为特定的地址;或修改为 http://0.0.0.0 来监听来自任何 IP 地址的请求,这种方案较为便捷,但需要留意服务可被访问的网络范围; graphs:图配置文件所在目录,默认值是 ./conf/graphs。init-store 会扫描该目录;Server 仅在 graph.load_from_local_config=true 时加载其中的 properties 文件; graph.load_from_local_config:是否在 Server 启动时读取本地图配置,源码默认值为 false; 当前上游模板中的 Arthas 键仍写作 arthas.telnet_port、arthas.http_port 和 arthas.disabled_commands,但 ServerOptions 读取的是下方示例中的 camelCase 名称。自定义配置应使用 arthas.telnetPort、arthas.httpPort 和 arthas.disabledCommands。
配置项 gremlinserver.url 是 GremlinServer 为 RestServer 提供服务的 url,该配置项默认为 http://localhost:8182,如需修改,需要和 gremlin-server.yaml 中的 host 和 port 相匹配;
4 hugegraph.properties hugegraph.properties 是一类文件,因为如果系统存在多个图,则会有多个相似的文件。该文件用来配置与图存储和查询相关的参数,文件的默认内容如下:
1 # gremlin entrence to create graph
2 gremlin.graph = org.apache.hugegraph.HugeFactory
3
4 # cache config
5 #schema.cache_capacity=100000
6 # vertex-cache default is 1000w, 10min expired
7 #vertex.cache_capacity=10000000
8 #vertex.cache_expire=600
9 # edge-cache default is 100w, 10min expired
10 #edge.cache_capacity=1000000
11 #edge.cache_expire=600
12
13 # schema illegal name template
14 #schema.illegal_name_regex=\s+|~.*
15
16 # NOTE: since 1.7.0, only hstore, rocksdb, hbase, memory are supported for backend.
17 # if you want to use Cassandra/MySql/PG... as backend, please use version < 1.7.0
18 backend = rocksdb
19 serializer = binary
20
21 store = hugegraph
22
23 # pd config
24 #pd.peers=127.0.0.1:8686
25
26 # task config
27 task.schedule_period = 10
28 task.retry = 0
29 task.wait_timeout = 10
30
31 # if use 'ikanalyzer', need download jar from 'https://github.com/apache/hugegraph-doc/raw/ik_binary/dist/server/ikanalyzer-2012_u6.jar' to lib directory
32 search.text_analyzer = jieba
33 search.text_analyzer_mode = INDEX
34
35 # rocksdb backend config
36 #rocksdb.data_path=/path/to/disk
37 #rocksdb.wal_path=/path/to/disk
38
39 # hbase backend config
40 #hbase.hosts=localhost
41 #hbase.port=2181
42 #hbase.znode_parent=/hbase
43 #hbase.threads_max=64 重点关注未注释的几项:
gremlin.graph:GremlinServer 的启动入口,用户不要修改此项; backend:使用的后端存储。1.7.0 支持 memory、rocksdb、hstore 和 hbase; serializer:schema、vertex 和 edge 写入后端时使用的序列化器。RocksDB 使用 binary; store:图在后端使用的存储名称; rocksdb.data_path:backend 为 rocksdb 时此项才有意义,rocksdb 的数据目录 rocksdb.wal_path:backend 为 rocksdb 时此项才有意义,rocksdb 的日志目录 5 多图配置 一个 Server 可以加载多个图,每个图使用单独的 properties 文件。下面创建 RocksDB 图 hugegraph_rocksdb 和内存图 hugegraph_memory。
[可选]:修改 rest-server.properties
通过修改 rest-server.properties 中的 graphs 配置项来设置图的配置文件目录。默认配置为 graphs=./conf/graphs,如果想要修改为其它目录则调整 graphs 配置项,比如调整为 graphs=/etc/hugegraph/graphs,示例如下:
1 graphs = ./conf/graphs
2 graph.load_from_local_config = true 在 conf/graphs 路径下基于 hugegraph.properties 创建 hugegraph_memory.properties 和 hugegraph_rocksdb.properties。
hugegraph_memory.properties 修改如下:
1 backend = memory
2 serializer = text
3 store = hugegraph_memory hugegraph_rocksdb.properties 修改如下:
1 backend = rocksdb
2 serializer = binary
3
4 store = hugegraph_rocksdb 停止 Server,初始化执行 init-store.sh(为新的图创建数据库),重新启动 Server
1 $ ./bin/stop-hugegraph.sh
1 $ ./bin/init-store.sh
2
3 Initializing HugeGraph Store...
4 2023-06-11 14:16:14 [ main] [ INFO] o.a.h.u.ConfigUtil - Scanning option 'graphs' directory './conf/graphs'
5 2023-06-11 14:16:14 [ main] [ INFO] o.a.h.c.InitStore - Init graph with config file: ./conf/graphs/hugegraph_rocksdb.properties
6 ...
7 2023-06-11 14:16:15 [ main] [ INFO] o.a.h.StandardHugeGraph - Graph 'hugegraph_rocksdb' has been initialized
8 2023-06-11 14:16:15 [ main] [ INFO] o.a.h.c.InitStore - Init graph with config file: ./conf/graphs/hugegraph_memory.properties
9 ...
10 2023-06-11 14:16:16 [ main] [ INFO] o.a.h.StandardHugeGraph - Graph 'hugegraph_memory' has been initialized
11 2023-06-11 14:16:16 [ main] [ INFO] o.a.h.StandardHugeGraph - Close graph standardhugegraph[ hugegraph_rocksdb]
12 ...
13 2023-06-11 14:16:16 [ main] [ INFO] o.a.h.HugeFactory - HugeFactory shutdown
14 2023-06-11 14:16:16 [ hugegraph-shutdown] [ INFO] o.a.h.HugeFactory - HugeGraph is shutting down
15 Initialization finished.
1 $ ./bin/start-hugegraph.sh
2
3 Starting HugeGraphServer...
4 Connecting to HugeGraphServer ( http://127.0.0.1:8080/graphspaces/DEFAULT/graphs) ...OK
5 Started [ pid 21614] 查看创建的图:
1 curl http://127.0.0.1:8080/graphspaces/DEFAULT/graphs
2
3 { "graphs" :[ "hugegraph_rocksdb" ,"hugegraph_memory" ]} 查看某个图的信息:
1 curl http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph_memory
2
3 { "name" :"hugegraph_memory" ,"backend" :"memory" }
1 curl http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph_rocksdb
2
3 { "name" :"hugegraph_rocksdb" ,"backend" :"rocksdb" }