TigerGraph 常见问题
Last updated
Last updated
TigerGraph包含如下重要组件:
gadmin: 配置和管理TigerGraph的程序
GPE:Graph Processing Engine,核心组件,负责图计算
GSE:Graph Storage Engine,核心组件,负责图存储
GSQL: 处理GSQL语言编译执行的程序
GraphStudio:图形化展示工具(基于浏览器)
TigerGraph是C++开发的分布式图数据库,支持数据压缩,单机加载速度可以达到90GB/h(SSD)或者60GB/h(机械硬盘),支持6000TPS以上的实时数据更新,且几乎不影响查询性能;分布式环境下并行加载速度、实时数据更新、查询速度,和节点个数呈弱线性增长。支持百亿节点和千亿条边,TB级的数据量。这里是一份TigerGraph和Neo4J、Neptune、JanusGraph、ArangoDB的性能测试对比报告,报告中使用的脚本等文件可以在这个GitHub链接上获得,欢迎重复试验。
支持,请参考tg-connect
执行 gadmin status license
查看当前license的有效期;
执行 gadmin set-license-key <new_license> && gadmin config-apply && gadmin restart -fy
更新license.
如果GraphStudio证书过期,打开或者页面时会有对话框提示,点击“update”;在弹出的页面中箭头1处输入新的license,点击箭头2处的update,然后在箭头3处可以看到新的有效期。
gsql –version
可以查看gsql版本信息,gadmin version可以查看每个模块的版本信息。
只能安装一个,否则可能有多个端口冲突。
TigerGraph的版本号分为三个字段major.minor.revision(例如,2.2.2),如果是major版本号更新,不支持兼容;如果是minor版本号更新,可能兼容,请咨询support@tigergraph.com;如果是revision版本号更新,肯定兼容。
兼容的情况,可以直接升级,可以保留图数据库数据以及gquery;不兼容的情况,请先卸载TigerGraph,再安装新版本。
分两种情况:
单机版本:直接执行install.sh即可,安装脚本会保留旧的配置、数据、schema、查询;
集群版本:解压缩离线安装包,从中提取 tigergraph.bin,在主节点m1以tigergraph账户上执行、bash tigergraph.bin
一个TigerGraph暂时只能有一个图,但是图里可以有多个不联通的子图。也可以使用多图(MultiGraph)。
TigerGraph支持数据压缩,一般占用内存为原始数据量的40%-60%;考虑到增量数据更新以及执行查询时需要额外申请的内存,建议内存和原始数据量一致(分布式情况下总内存大小和数据量相同即可)。CPU可根据查询的复杂度、QPS以及响应时间综合考虑。
没有内置的Java API,但是TigerGraph支持RESTful接口,可以使用Java调用RESTful接口。参见RESTPP API User Guide
参见硬件及软件配置
使用的端口有:
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
这两个命令都位于目录~/.gium 下,请查看是否有对应的文件,如果有,把该目录加入PATH环境变量即可:export PATH=~/.gium:$PATH
如果没有对应的文件,可能安装过程有问题,请重新安装尝试。
查看所有节点和边类型的总个数: gadmin status -v graph
或者
查询边:
请替换其中的graph_name/vertex_type/vertex_id为自己的图名称/节点类型/节点ID.
请替换其中的graph_name/vertex_type/vertex_id为自己的图名称/节点类型/节点ID. 删除节点之后,依附于该节点的边会自动删除。
可以执行命令 gsql 'CLEAR GRAPH STORE -HARD',
这会删除所有的节点和边;
如果只是想删除某个子图下的节点和边,建议使用 “删除某种类型的所有节点和边”按类型一个个删除。
依次执行如下命令即可:
分布式环境下,需在其它节点上分别执行后面三条命令。
会影响性能。
Schema动态修改的功能提供了便利性,但是使用不好也可能引入性能问题。例如,删除节点中的某个属性,虽然表面上看节点没有这个属性了,但是从物理上看,该属性占用的存储还在,只是图引擎访问到它时故意忽略了它。因此,推荐的操作是,在Schema设计之初,就统筹想好需要用到的数据、属性、关系,以及在当前Schema设计之下能否高效的实现所有的查询逻辑,而尽量避免后续修改Schema。
gquery查询的性能和查询过程中需要访问的节点和边的个数线性相关。
直觉的做法是,激活所有的交易节点,然后判断其时间属性,在指定的时间区间则作为结果输出。但是这种做法在总交易数目比较大的时候,需要激活的节点比较多,性能会比较差。推荐的做法是,建立虚拟的日期节点(例如,“20181015”),把所有发生在这一天的交易关联到相应的日期节点下。这样,遍历时只要先访问日期节点再访问相关联的交易节点即可,需要激活的节点会大大减少。
安装gquery时,需要把gquery代码翻译成C++代码,然后编译进入libudf.so并动态加载,最后注册为Restful接口,大概需要一分钟左右。
如果需要安装多个gquery,可以批量安装,也就是:
每个gquery里不加入install query xxx
语句或者执行gsql 'install query xxx'
,调用gsql依次编译每个gquery,最后执行 gsql -g [YourGraph] 'install query *'
即可(请替换语句中的YourGraph为您定义的Graph名称)。
有两种可能:
磁盘IO问题:如果磁盘是机械硬盘,请优先考虑这种情况。top
命令查看cpu和内存的利用率,iostat
查看磁盘IO。如果cpu利用率不高,但是磁盘IO很高,那么瓶颈很可能在后者。如果有多个磁盘,可以把~/tigergraph/gstore/
、~/tigergraph/kafka/
、~/tigergraph/logs/
放置到不同的目录;如果磁盘数据多于4个,可以考虑建立LVM,使用striped模式。参考LVM Linear vs Striped Logical Volumes. 当然,如果可以换为SSD最好;
实时数据更新有很多删除节点、新建节点操作。过多的删除节点会影响性能,建议修改为更新节点属性。
系统缺省的timeout时间为16s,可通过如下命令修改:
如果查询时间有可能超过2小时(例如,跑社区发现算法),则还需要修改tigergraph/config/nginx/nginx_[1-n].conf
中的fastcgi_read_timeout、fastcgi_send_timeout
(各两处)。该文件的个数和节点的个数相同,也就是说一个节点一个nginx.conf
配置。
可以在加载数据之前修改timeout,这样的话重启会更快一些。
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
查看错误信息
也可联系售前协助。
FAIL TO LOCK THE CATALOG
,怎么办?请执行gadmin status
查看服务状态,
如果有部分服务是down
,请执行gadmin star
t启动服务;
否则,可能有其它终端在执行gsql命令,请等待对方执行完成。
如果确认无需等待,可以执行gadmin restart gsql -fy
强制重新获取控制权
(注意,gadmin restart gsql -fy
会导致对方的gsql命令执行失败)。
不建议,可能导致部分服务状态异常。如果出现异常状态,可以执行gadmin restart -fy
重启服务。
请根据终端打印出的错误信息修改代码;
此外,请查看文件~/tigergraph/dev/gdk/gsql/logs/GSQL_LOG
,可能含有额外的错误信息。
由于该文件是append方式写入的,可以在安装gquery之前删除该文件,安装失败之后再在该文件中搜索error,以保证错误信息都是本次安装相关的。
请查看对应的log文件:
gadmin log gse/gpe
可以显示gse/gpe的log文件;使用gadmin log -v gse/gpe
可以显示对应文件的最后10行。
请执行 gadmin start ts3
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重启服务试试。
可能有两种情况:
图数据库中没有数据,导入schema和数据即可
系统刚启动,还在加载数据至内存;可通过top命令查看内存占用,不再增长时即可