30 votes

Quand commencez-vous des nœuds Elasticsearch supplémentaires?

Je suis dans le milieu de tenter de remplacer une configuration de Solr avec Elasticsearch. C'est une nouvelle installation, qui n'a pas encore vu de production, j'ai donc beaucoup de place pour jouer avec les choses et de les faire bien le travail.

J'ai de très, de très grandes quantités de données. Je suis d'indexation de certaines données en direct et de s'y accrocher pour 7 jours (à l'aide de la _ttl champ). Je ne pas stocker les données dans l'index (et désactivé le _source champ). J'attends mon index à se stabiliser autour de 20 milliards de lignes. Je vais mettre ces données en 2-3 nommé index. La recherche de la performance à ce jour avec jusqu'à quelques milliards de lignes est tout à fait acceptable, mais les performances de l'indexation est un problème.

Je suis un peu confus sur la façon de l'ES utilise des éclats à l'interne. J'ai créé deux ES nœuds, chacun avec un répertoire de données, chacun avec 8 index et 1 réplique. Quand je regarde l'état du cluster, je ne vois qu'un éclat et une réplique pour chaque nœud. Ne pas chaque nœud conserver plusieurs index en cours d'exécution à l'interne? (Vérification du stockage sur disque de localisation montre qu'il ya certainement un seul index Lucene présent). -- Résolu, comme mon index paramètre n'a pas été repris correctement à partir de la config. La création de l'index à l'aide de l'API et en spécifiant le nombre de tessons et des répliques a désormais produit exactement ce que j'aurais attendu de voir.

Aussi, j'ai essayé plusieurs copies de la même ES nœud (à partir de la même configuration), et il reconnaît qu'il existe déjà une copie en cours d'exécution et crée son propre espace de travail. Ces nouvelles instances de nœuds semblent également avoir un seul indice sur disque. -- Maintenant que chaque nœud est fait à l'aide de plusieurs indices, un nœud unique avec de nombreux indices est plus que suffisant pour ralentir l'ensemble du système, donc c'est un non-problème.

Quand commencez-vous supplémentaires Elasticsearch nœuds, pour un maximum de performances de l'indexation? Je devrais avoir le nombre de nœuds de chaque course avec 1 indice 1 réplique, ou de moins en moins de nœuds avec des tonnes d'indices? Il y a une chose qui me manque avec ma configuration afin d'avoir des nœuds de faire plus de travail?

Aussi: Est-il en mesure de savoir quand un HTTP-un seul nœud est surchargé? Droit maintenant, j'ai un nœud consacré à HTTP seule, mais en plus de l'utilisation du PROCESSEUR, je ne peux pas dire si c'est fait OK ou pas. Quand est-il temps de commencer supplémentaire HTTP nœuds et de diviser votre logiciel d'indexation pour pointer vers les différents nœuds?

68voto

javanna Points 24751

Nous allons clarifier la terminologie un peu d'abord.
Nœud: un elasticsearch instance en cours d'exécution (un processus java). Habituellement, chaque nœud s'exécute sur sa propre machine. Cluster: un ou plusieurs nœuds avec le même nom de cluster.
Indice: plus ou moins comme une base de données.
Type: plus ou moins comme une table de base de données.
Tesson: effectivement l'index lucene. Chaque indice est composé d'un ou plusieurs fragments. Un fragment peut être l'un des principaux fragment (ou simplement fragment) ou une réplique.

Lorsque vous créez un index vous pouvez spécifier le nombre de tessons et le nombre de répliques par fragment. La valeur par défaut est 5 premiers éclats et 1 réplique par fragment. Les fragments sont automatiquement réparties uniformément sur le cluster. Une réplique d'éclat ne sera jamais attribué sur la même machine où la relative primaire tesson est.

Ce que vous voyez dans l'état du cluster est bizarre, je vous suggère de vérifier vos paramètres d'indexation à l'aide de l'aide de l' obtenir les paramètres de l'API. Ressemble vous avez configuré un seul fragment, mais de toute façon, vous devriez voir plus de tessons si vous avez plus d'un index. Si vous avez besoin de plus d'aide, vous pouvez envoyer la sortie que vous obtenez à partir d'elasticsearch.

Combien d'éclats et de répliques que vous utilisez dépend vraiment de vos données, la façon dont vous accédez ainsi que le nombre de nœuds disponibles/serveurs. Il est recommandé de overallocate des éclats un peu afin de les redistribuer dans le cas où vous ajoutez plus de nœuds de votre cluster, puisque vous ne pouvez pas (pour l'instant) de modifier le nombre de tessons une fois que vous avez créé à l'index. Sinon, vous pouvez toujours modifier le nombre de tessons si vous êtes prêt à procéder à une réindexation de vos données.

Chaque fragment est livré avec un coût car chaque fragment est effectivement un Lucene instance. Le nombre maximum de fragments que vous pouvez avoir par machine dépend vraiment du matériel disponible et de vos données. Bon à savoir que le fait d'avoir 100 index avec chacun un fragment ou un indice de 100 tessons est vraiment le même depuis que vous auriez à 100 lucene instances dans les deux cas.

Bien sûr, au moment de la requête, si vous voulez interroger un seul elasticsearch indice composé de 100 éclats elasticsearch aurait besoin de les interroger tous, afin d'obtenir des résultats corrects (sauf si vous avez utilisé un routage spécifique pour vos documents pour une requête uniquement un fragment). Cela aurait un coût de performance.

Vous pouvez facilement vérifier l'état de votre cluster de nœuds à l'aide des Nœuds de Cluster Info API qui vous permet de vérifier un grand nombre d'informations utiles, tout ce que vous devez afin de savoir si votre nœuds sont en cours d'exécution en douceur ou pas. Encore plus facile, il ya un couple de plugins pour vérifier ces informations par le biais d'une interface agréable (qui utilise en interne la elasticsearch Api de toute façon): paramédical et bigdesk.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X