TigerGraph 常见问题

TIGERGRAPH开发者版本和商业版有什么区别?

请参见TigerGraph 版本比较

TIGERGRAPH的架构

TigerGraph 架构

TigerGraph包含如下重要组件:

  1. gadmin: 配置和管理TigerGraph的程序

  2. GPE:Graph Processing Engine,核心组件,负责图计算

  3. GSE:Graph Storage Engine,核心组件,负责图存储

  4. GSQL: 处理GSQL语言编译执行的程序

  5. GraphStudio:图形化展示工具(基于浏览器)

TIGERGRAPH相对于其它常见图数据库有何优势?

TigerGraph是C++开发的分布式图数据库,支持数据压缩,单机加载速度可以达到90GB/h(SSD)或者60GB/h(机械硬盘),支持6000TPS以上的实时数据更新,且几乎不影响查询性能;分布式环境下并行加载速度、实时数据更新、查询速度,和节点个数呈弱线性增长。支持百亿节点和千亿条边,TB级的数据量。这里是一份TigerGraph和Neo4J、Neptune、JanusGraph、ArangoDB的性能测试对比报告,报告中使用的脚本等文件可以在这个GitHub链接上获得,欢迎重复试验。

系统特性

TIGERGRAPH是否支持从HDFS或者RDBMS读取数据?

支持,请参考tg-connect

如何更新TigerGraph Server LICENSE?

  • 执行 gadmin status license 查看当前license的有效期;

  • 执行 gadmin set-license-key <new_license> && gadmin config-apply && gadmin restart -fy更新license.

如何更新GRAPH STUDIO的LICENSE?

Graph Studio License 更新

如何查看当前TIGERGRAPH版本?

gsql –version 可以查看gsql版本信息,gadmin version可以查看每个模块的版本信息。

一台机器可以安装多个TIGERGRAPH吗?

只能安装一个,否则可能有多个端口冲突。

TIGERGRAPH是否向前兼容?

TigerGraph的版本号分为三个字段major.minor.revision(例如,2.2.2),如果是major版本号更新,不支持兼容;如果是minor版本号更新,可能兼容,请咨询support@tigergraph.com;如果是revision版本号更新,肯定兼容。

兼容的情况,可以直接升级,可以保留图数据库数据以及gquery;不兼容的情况,请先卸载TigerGraph,再安装新版本。

如何升级TIGERGRAPH?

分两种情况:

  1. 单机版本:直接执行install.sh即可,安装脚本会保留旧的配置、数据、schema、查询;

  2. 集群版本:解压缩离线安装包,从中提取 tigergraph.bin,在主节点m1以tigergraph账户上执行、bash tigergraph.bin

一个TIGERGRAPH可以有多个从存储上隔离的图吗?

一个TigerGraph暂时只能有一个图,但是图里可以有多个不联通的子图。也可以使用多图(MultiGraph)。

如何确定机器配置?

TigerGraph支持数据压缩,一般占用内存为原始数据量的40%-60%;考虑到增量数据更新以及执行查询时需要额外申请的内存,建议内存和原始数据量一致(分布式情况下总内存大小和数据量相同即可)。CPU可根据查询的复杂度、QPS以及响应时间综合考虑。

TIGERGRAPH是否支持JAVA API?

没有内置的Java API,但是TigerGraph支持RESTful接口,可以使用Java调用RESTful接口。参见RESTPP API User Guide

TIGERGRAPH是否有内置的算法?

参见GSQL图数据算法库

GRAPHSTUDIO支持哪些浏览器?

参见硬件及软件配置

系统使用及配置

TIGERGRAPH使用哪些端口?如果冲突怎么办?

使用的端口有:

  • 14240(或者44240)

  • 5500

  • 6500

  • 9000

  • 7500,等等。

可以使用命令gadmin –dump-config | grep -i port查看所有的端口,然后修改对应的端口即可,例如修改UI的端口:gadmin –configure nginx.services.port,输入新的端口号,然后依次执行 gadmin config-apply && gadmin restart -fy 即可。

为何修改配置后没有生效?

请确认执行:gadmin config-apply && gadmin restart -fy

有哪些常用的GADMIN命令?

查看服务状态:gadmin status
启动服务: gadmin start
停止服务: gadmin stop -fy
重启服务: gadmin restart -fy
修改配置: gadmin --configure
应用配置: gadmin config-apply
修改runtime变量: gadmin --configure runtime
查看license有效期: gadmin status license
更新license: gadmin set-license-key [new_license]
查看gse log位置: gadmin log -v gse
查看节点和边总个数: gadmin status -v graph

为何没有GADMIN和GSQL命令?

这两个命令都位于目录~/.gium 下,请查看是否有对应的文件,如果有,把该目录加入PATH环境变量即可:export PATH=~/.gium:$PATH

如果没有对应的文件,可能安装过程有问题,请重新安装尝试。

如何查询节点和边的个数?

查看所有节点和边类型的总个数: gadmin status -v graph

查看每种节点类型的个数:
curl -H 'Content-Type:application/json' -X POST 'http://localhost:9000/builtins' -d '{"function":"stat_vertex_number","type":"*"}'
查看每种边类型的个数:
curl -H 'Content-Type:application/json' -X POST 'http://localhost:9000/builtins' -d '{"function":"stat_edge_number","type":"*"}'

如何查询特定的节点或者边?

查询节点:
curl -sX GET "http://localhost:9000/graph/[graph_name]/vertices/[vertex_type]/[vertex_id]"

或者

查询节点:
gsql -g [graph_name] 'select * from [vertex_type] where primary_id == "[vertex_id]"'

查询边:

curl -sX GET "http://localhost:9000/graph/[graph_name]/edges/[src_vertex_type]/[src_vertex_id]/[edge_type]/[dest_vertex_type]/[dest_vertex_id]"

请替换其中的graph_name/vertex_type/vertex_id为自己的图名称/节点类型/节点ID.

如何删除节点和边?

删除某个节点:
curl -sX DELETE "http://localhost:9000/graph/[graph_name]/vertices/[vertex_type]/[vertex_id]"
删除某条边:
curl -sX DELETE "http://localhost:9000/graph/[graph_name]/edges/[src_vertex_type]/[src_vertex_id]/[edge_type]/[dest_vertex_type]/[dest_vertex_id]"
删除某种类型的所有节点和边:
curl -sX DELETE "http://localhost:9000/graph/[graph_name]/vertices/[vertex_type]"

请替换其中的graph_name/vertex_type/vertex_id为自己的图名称/节点类型/节点ID. 删除节点之后,依附于该节点的边会自动删除。

如何删除图里的所有节点和边?

可以执行命令 gsql 'CLEAR GRAPH STORE -HARD',这会删除所有的节点和边;

如何卸载TIGERGRAPH?

依次执行如下命令即可:

gadmin stop -fy
pkill ts3svc
pkill gadmin_server
rm -rf ~/tigergraph ~/tigergraph_coredump ~/.gium ~/.gsql ~/.gsql_fcgi ~/.syspre ~/.venv

图结构设计技巧

为何不建议频繁的修改SCHEMA?

会影响性能。

Schema动态修改的功能提供了便利性,但是使用不好也可能引入性能问题。例如,删除节点中的某个属性,虽然表面上看节点没有这个属性了,但是从物理上看,该属性占用的存储还在,只是图引擎访问到它时故意忽略了它。因此,推荐的操作是,在Schema设计之初,就统筹想好需要用到的数据、属性、关系,以及在当前Schema设计之下能否高效的实现所有的查询逻辑,而尽量避免后续修改Schema。

需要查询某个时间段内的所有交易,总交易数目很大,如何高效设计SCHEMA?

gquery查询的性能和查询过程中需要访问的节点和边的个数线性相关

直觉的做法是,激活所有的交易节点,然后判断其时间属性,在指定的时间区间则作为结果输出。但是这种做法在总交易数目比较大的时候,需要激活的节点比较多,性能会比较差。推荐的做法是,建立虚拟的日期节点(例如,“20181015”),把所有发生在这一天的交易关联到相应的日期节点下。这样,遍历时只要先访问日期节点再访问相关联的交易节点即可,需要激活的节点会大大减少。

安装GQUERY比较慢,如何优化?

安装gquery时,需要把gquery代码翻译成C++代码,然后编译进入libudf.so并动态加载,最后注册为Restful接口,大概需要一分钟左右。

如果需要安装多个gquery,可以批量安装,也就是:

每个gquery里不加入install query xxx语句或者执行gsql 'install query xxx',调用gsql依次编译每个gquery,最后执行 gsql -g [YourGraph] 'install query *'即可(请替换语句中的YourGraph为您定义的Graph名称)。

为何启动实时数据更新之后,查询变慢了?

有两种可能:

  1. 磁盘IO问题:如果磁盘是机械硬盘,请优先考虑这种情况。top命令查看cpu和内存的利用率,iostat查看磁盘IO。如果cpu利用率不高,但是磁盘IO很高,那么瓶颈很可能在后者。如果有多个磁盘,可以把~/tigergraph/gstore/~/tigergraph/kafka/~/tigergraph/logs/放置到不同的目录;如果磁盘数据多于4个,可以考虑建立LVM,使用striped模式。参考LVM Linear vs Striped Logical Volumes. 当然,如果可以换为SSD最好;

  2. 实时数据更新有很多删除节点、新建节点操作。过多的删除节点会影响性能,建议修改为更新节点属性。

为何查询超时?

系统缺省的timeout时间为16s,可通过如下命令修改:

修改timeout时间
gadmin --configure timeout
# 修改除GraphStudio.WebSocket.Timeout之外的timeout为3600(一小时)或者更长的时间
Test servers with supplied settings? [Y/n]
# 保存配置,输入y
Save settings? [y/N] y
gadmin config-apply
gadmin restart -fy

如果查询时间有可能超过2小时(例如,跑社区发现算法),则还需要修改tigergraph/config/nginx/nginx_[1-n].conf中的fastcgi_read_timeout、fastcgi_send_timeout(各两处)。该文件的个数和节点的个数相同,也就是说一个节点一个nginx.conf配置。

可以在加载数据之前修改timeout,这样的话重启会更快一些。

常见报错信息

执行GSQL命令时显示CONNECTION REFUSED.,怎么办?

请执行gadmin status gsql查看服务状态,

  • 如果状态是down,请执行gadmin start admin && gadmin start gsql尝试启动服务;

  • 如果之后gsql还是down,请执行bash -x /home/tigergraph/tigergraph/dev/gdk/gsql/gsql_server_util START查看错误信息

  • 也可联系售前协助。

执行GSQL命令时提示FAIL TO LOCK THE CATALOG,怎么办?

请执行gadmin status查看服务状态,

  • 如果有部分服务是down,请执行gadmin start启动服务;

  • 否则,可能有其它终端在执行gsql命令,请等待对方执行完成。

  • 如果确认无需等待,可以执行gadmin restart gsql -fy强制重新获取控制权

执行GSQL命令加载SCHEMA、数据或者安装GQUERY时可以CTRL+C退出吗?

不建议,可能导致部分服务状态异常。如果出现异常状态,可以执行gadmin restart -fy重启服务。

安装GQUERY失败,如何处理?

请根据终端打印出的错误信息修改代码;

此外,请查看文件~/tigergraph/dev/gdk/gsql/logs/GSQL_LOG,可能含有额外的错误信息。

由于该文件是append方式写入的,可以在安装gquery之前删除该文件,安装失败之后再在该文件中搜索error,以保证错误信息都是本次安装相关的。

执行GADMIN START之后GPE或者GSE还是DOWN,怎么办?

请查看对应的log文件:

gadmin log gse/gpe可以显示gse/gpe的log文件;使用gadmin log -v gse/gpe可以显示对应文件的最后10行。

执行GADMIN START之后TS3的状态是DOWN,怎么办?

请执行 gadmin start ts3

为何打不开GRAPHSTUDIO?

GraphStudio对应的端口为14240或者44240,请使用命令netstat -nlpt | grep 4240确认。找到端口后,执行curl -v ‘127.0.0.1:14240’或者 curl -v ‘127.0.0.1:44240’验证结果是否正常;

如果curl命令正常,但是浏览器打不开,请检查网络配置或者防火墙配置。如果没有对应的端口被打开,请使用gadmin status查看状态,或者使用gadmin restart -fy重启服务试试。

为何GSE、GPE的状态都是NOT_READY?

可能有两种情况:

  1. 图数据库中没有数据,导入schema和数据即可

  2. 系统刚启动,还在加载数据至内存;可通过top命令查看内存占用,不再增长时即可

Last updated

Was this helpful?