2016-03-27 4 views
0

HBaseバックエンドでTitan 1.0を使用しています。毎日何億もの頂点とエッジを作成しています。 私は繰り返し、次のエラーが発生します:TitanException:ストレージから新しいIDブロックを取得できませんでした

TitanException: Could not acquire new ID from storage 

いくつかの研究の後、私は自分で頂点IDを生成することができましたが、新しいエッジと頂点プロパティを添加しながら、私はまだ割り当てエラーを目撃しています。

この問題を解決するにはどうすればよいですか? hereのように、UUIDを使用してEdgeおよびProperty IDを設定できますか? クエリのパフォーマンスにどういう影響を与えますか?

おかげ

答えて

1

いくつかの調査の後、私はいくつかの洞察を思いついた。

Titan 1.0では、各IDブロック割り当てのタイムアウトを設定する構成設定が移動され、現在ids.authority.wait-timeと呼ばれています。 また、このオプションの値はローカルTitanプロパティファイルで設定することはできません。バックエンド(私の場合はHBase)でグローバルに更新する必要があります。

タイムアウトのデフォルト値は0.3 secondsです。これは頻繁に発生する障害を説明しています。値を設定した後、エラーはずっと少なくなります。

1

私は同様のエラーを得ていたと私はそれを修正するために管理の方法は、各トランザクションが使用できるIDのブロックサイズを増やすことです。これは私のためのトリックでした:このサイズのチャンクで

グローバル予備グラフ要素ID:ids.blockサイズの変更については、次の

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

参照ドキュメントhereを言います。これを低く設定すると、遅い予約要求では頻繁にコミットがブロックされます。それを高く設定すると、予約されているがほとんど使われていないブロックでグラフインスタンスがシャットダウンしたときにIDが無駄になります。

関連する問題