TitanException:无法从存储中获取新的ID块

时间:2016-03-27 06:14:14

标签: hbase titan

我正在使用带有HBase后端的Titan 1.0,每天创建数亿个顶点和边缘。 我反复收到以下错误:

TitanException: Could not acquire new ID from storage

经过一些研究,我能够自己生成顶点ID,但在添加新的边缘和顶点属性时,我仍然看到分配错误

我可以做些什么来克服这个问题? 是否可以使用UUID设置边缘和属性ID,如提供的here? 它会以某种方式影响查询性能吗?

由于

2 个答案:

答案 0 :(得分:1)

我遇到了类似的错误,我设法修复它的方法是增加每个事务可以使用的id块大小。这对我来说很有把握:

TitanGraph titanGraph = TitanFactory.open(config);
graph.configuration().setProperty("ids.block-size", idBlockSize);

参考文档here说明了有关更改 ids.block-size 的以下内容:

  

全局保留此大小的块中的图元素ID。将此设置得太低会使提交经常阻止缓慢的预留请求。设置得太高会导致在图形实例使用保留但大部分未使用的块关闭时浪费ID。

答案 1 :(得分:1)

经过一番研究,我想出了一些见解。

在Titan 1.0上,移动了设置每个ID Block分配超时的配置设置,现在称为ids.authority.wait-time。 此外,您无法通过本地Titan属性文件设置此选项的值 - 它必须在您的后端全局更新(在我的情况下为HBase)。

超时的默认值是0.3 seconds - 这解释了我们经常出现的故障。设置值后,错误的频率会低得多。