2017-08-31 19 views
1

Geomesaは、空間的、時間的データベースであり、詳細はこちらをご利用いただけます:http://www.geomesa.org/Geomesaクエリパフォーマンス

私はそれでHBaseのデータベースを設定することにより、例えば、チュートリアルをしようとしています。私はHbaseクイックスタートチュートリアルを実行していますhttp://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.htmlこのチュートリアルはうまく動作しますが、以下はバウンディングボックスのクエリパフォーマンスに気付いた問題のいくつかです。

私はこの設定では(35,65)

に緯度、LNGの範囲(30,60)を使用してデータを挿入している、私は私のローカルマシン上でクエリをしています:
a)は私の最初のクエリでロケーション境界ボックスは、(30,60)〜(30.1,60.1)です。これは1秒未満で平均して実行され、正しい結果を返します。
b)2番目のクエリで、場所の境界ボックス(10,10)を(30.1,60.1)に変更しました。このクエリは、クエリ(a)と同じ結果を返しますが、平均してクエリあたり約3〜4秒かかります。

両方のクエリで同じ結果が得られるはずですが、一方のクエリでは他のクエリよりもはるかに高速に実行されるためです。時間範囲が挿入されたデータと一致しない場合、パフォーマンスがさらに悪化する(10倍遅くなるか、またはそれ以上になる)時間領域クエリでも同様の動作に気付きます。以下は私の質問の一部です:
1)これは予想される動作ですか?
2)Geomesaに挿入された実際のデータの空間的および時間的な範囲にマッピングするためにクエリを再フォーマットすることができる解決法の1つがわかります。これは、データに関する追加のメタデータを維持する必要があります。しかし、私はGeomesa層でよりよい解決策が設計されると思いますか?

この動作に影響する可能性のある設定などがあるかどうか教えてください。私はGeomesaを設定することによって、複数の他のローカルマシンとクラウドVMSで同じ動作を見てきました。

答えて

2

一般に、GeoMesaは実際にそこにデータがない場合でも、まだどこにあるかをスキャンする必要があります。スキャンを開くと、データが返されなくても時間がかかります。時間的問合せの場合、範囲の数はさらに大きくなる傾向があり、したがってパフォーマンスは低下します。

Accumuloは、複数の範囲を受け入れるバッチスキャナというコンセプトを持ち、データの開始/終了に関する知識があるため、HBaseよりもこれを少し上手く処理すると思います。 HBaseの場合、GeoMesaはthread poolを使用して複数のスキャンを実行する必要があるため、効率的ではありません。

GeoMesaにはデータ統計の概念もありますが、まだHBaseには実装されておらず、現在はクエリ計画では使用されていません。

問題を軽減するために、クエリ中にさらにスレッドを使用するために、 "queryThreads"データストアパラメータを増やすことができます。現在無効にしている場合は、「looseBoundingBox」を有効にすることもできます。時間クエリでは、temporal binning periodを大きくすると、スキャンする範囲が少なくなる可能性があります。しかし、これにより、非常に小さな時間的範囲のためのクエリが遅くなる可能性があるため、ユースケースに合わせて調整する必要があります。

最後に、分散型コプロセッサがインストールされていることと、ゆるいバウンディングボックスを使用していない場合はenabledを使用していることを確認してください。

+0

返信いただきありがとうございます。私はその提案を試してみる。 –

関連する問題