2017-08-31 5 views
1

Geomesa est une base de données spatio-temporelle, plus de détails sont disponibles ici: http://www.geomesa.org/Geomesa les performances des requêtes

J'essaie le tutoriel exemple, en mettant en place la base de données Hbase avec elle. Je cours le tutoriel Hbase QuickStart http://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html Le tutoriel fonctionne bien, ci-dessous sont quelques-uns des problèmes que je note dans les performances de requête de la boîte englobante.

J'ai inséré des données avec lat, plage lng (30,60) à (35,65)

Dans ces paramètres, je fais requête sur ma machine locale:
a) Dans ma première requête , la zone de délimitation de l'emplacement est: (30,60) à (30,1,60.1), il fonctionne sur une moyenne en moins d'une seconde et renvoie des résultats corrects.
b) Dans la deuxième requête, j'ai modifié la boîte de délimitation d'emplacement (10,10) à (30,1,60.1). Cette requête renvoie également les mêmes résultats que dans la requête (a), ce qui est attendu, mais en moyenne cela prend environ 3-4 secondes par requête.

Étant donné que les deux requêtes devraient me donner les mêmes résultats, mais l'un fonctionne beaucoup plus vite que l'autre. Je remarque le même comportement dans les requêtes de domaine temporel où la performance est encore pire (10 fois plus lente ou plus) si les plages de temps ne correspondent pas aux données insérées. Voici quelques-unes de mes questions:
1) Est-ce que ce comportement est attendu?
2) Je sais que l'une des solutions peut consister à reformater la requête pour qu'elle soit mappée aux gammes spatiales et temporelles réelles de données insérées dans Geomesa, ce qui nécessitera que je maintienne des métadonnées supplémentaires sur les données. Mais, je pense qu'une meilleure solution pourrait être conçue à la couche de Geomesa? Est-ce que, faites-moi savoir s'il y a un certain type de paramètres etc, qui peuvent affecter ce comportement. J'ai vu le même comportement sur plusieurs autres machines locales et sur le cloud VMS en installant Geomesa.

Répondre

2

En général, GeoMesa doit toujours analyser où peut être être des données, même s'il n'y a pas réellement de données. L'ouverture d'une analyse, même si elle ne renvoie aucune donnée, prend du temps. Pour les requêtes temporelles, le nombre de plages a tendance à être encore plus important, d'où la baisse des performances. Je crois qu'Accumulo gère un peu mieux que HBase, car il a un concept de scanner par lots qui accepte plusieurs gammes, et il a une certaine connaissance du début et de la fin des données. Pour HBase, GeoMesa doit exécuter plusieurs analyses en utilisant un thread pool, donc ce n'est pas aussi efficace.

GeoMesa a également le concept de statistiques de données, mais il n'a pas encore été implémenté pour HBase, et il n'est actuellement pas utilisé dans la planification des requêtes. Pour atténuer le problème, vous pouvez essayer d'augmenter le paramètre de banque de données "queryThreads" afin d'utiliser plus de threads pendant les requêtes. Vous pouvez également activer "looseBoundingBox" si vous l'avez désactivé. Pour les requêtes temporelles, l'augmentation du temporal binning period peut entraîner l'analyse de moins de plages. Cependant, cela peut entraîner des requêtes plus lentes pour de très petites plages temporelles, il doit donc être adapté à votre cas d'utilisation. En guise de note finale, assurez-vous que les coprocesseurs distribués sont installés et que enabled est installé, en particulier si vous n'utilisez pas de boîtes englobantes.

+0

Merci pour votre réponse. Je vais essayer les suggestions. –