407 votes

Tessons et répliques en Elasticsearch

Je suis en train de comprendre quel éclat et réplique est dans Elasticsearch, mais je n’arrive pas à le comprendre. Si j’ai télécharger Elasticsearch et exécutez le script, puis ce que je sais, que j’ai commencé un cluster avec un nœud unique. Ce nœud (mon PC) ont maintenant 5 éclats ( ?) et certaines répliques ( ?).

Quelles sont-elles, dois-je 5 doubles de l’index ? Si oui pourquoi ? Je pourrais ont besoin de quelques explications.

1303voto

javanna Points 24751

Je vais essayer de l'expliquer avec un exemple réel, puisque la réponse et les réponses que vous avez obtenu ne semblent pas vous aider.

Lorsque vous téléchargez elasticsearch et démarrez-le, vous créez une elasticsearch nœud qui tente de rejoindre un cluster existant, si disponible, ou en crée une nouvelle. Disons que vous avez créé votre propre nouveau cluster avec un nœud unique, celui que tu vient de commencer. Nous n'avons pas de données, nous avons donc besoin de créer un index.

Lorsque vous créez un index (index est automatiquement créé lors de l'index le premier document en tant que bien), vous pouvez définir la façon dont de nombreux tessons il sera composé de. Si vous ne spécifiez pas un nombre, il aura la valeur par défaut du nombre de fragments: 5 primaires. Ça veut dire quoi?

Cela signifie que elasticsearch permettra de créer des 5 premiers éclats qui contiendra vos données:

 ____    ____    ____    ____    ____
| 1  |  | 2  |  | 3  |  | 4  |  | 5  |
|____|  |____|  |____|  |____|  |____|

Chaque fois que vous indexer un document elasticsearch décidera de la primaire tesson est supposé détenir ce document et de les indexer. Primaire sont les éclats de ne pas copier des données, ils sont les données! Ayant plusieurs fragments ne aider à prendre avantage de traitement en parallèle sur une seule machine, mais le fait est que si l'on commence une autre elasticsearch exemple sur le même cluster, les fragments seront distribués dans une même façon sur le cluster.

Le nœud 1 sera alors tenez par exemple, seulement trois fragments:

 ____    ____    ____ 
| 1  |  | 2  |  | 3  |
|____|  |____|  |____|

Depuis les deux autres fragments ont été déplacés vers le nouveau nœud:

 ____    ____
| 4  |  | 5  |
|____|  |____|

Pourquoi est-ce arrivé? Parce que elasticsearch est un moteur de recherche décentralisé et de cette façon vous pouvez faire usage de plusieurs nœuds/machines de gérer les grandes quantités de données.

Chaque elasticsearch indice est composé d'au moins un primaire d'éclat, puisque c'est là que sont stockées les données. Chaque fragment est livré à un coût bien, donc si vous avez un nœud unique et non prévisible de la croissance, il suffit de coller un seul primaire éclat.

Un autre type de fragment est une réplique. La valeur par défaut est 1, ce qui signifie que chaque serveur sera copié vers un autre fragment qui contient les mêmes données. Les répliques sont utilisés pour augmenter les performances de la recherche et pour le basculement. Une réplique d'un fragment est de ne jamais va être allouée sur le même nœud où la relative primaire est (à peu près comme mettre une sauvegarde sur le même disque que les données d'origine).

De retour à notre exemple, avec 1 réplique, nous allons avoir la totalité de l'index sur chaque nœud, depuis 3 réplique éclats seront alloués sur le premier nœud et ils contiennent exactement les mêmes données que la primaire sur le deuxième nœud:

 ____    ____    ____    ____    ____
| 1  |  | 2  |  | 3  |  | 4R |  | 5R |
|____|  |____|  |____|  |____|  |____|

De même pour le deuxième nœud, qui contiendra une copie de la primaire éclats sur le premier nœud:

 ____    ____    ____    ____    ____
| 1R |  | 2R |  | 3R |  | 4  |  | 5  |
|____|  |____|  |____|  |____|  |____|

Avec une telle configuration, si un nœud tombe en panne, vous avez encore la totalité de l'index. La réplique des éclats de devenir automatiquement les primaires et le cluster fonctionne correctement malgré la défaillance d'un nœud, comme suit:

 ____    ____    ____    ____    ____
| 1  |  | 2  |  | 3  |  | 4  |  | 5  |
|____|  |____|  |____|  |____|  |____|

Puisque vous avez "number_of_replicas":1, les répliques ne peut être attribué plus comme ils ne sont jamais affectés sur le même nœud où leur primaire. C'est pourquoi vous aurez 5 non affecté éclats, les répliques, et l'état du cluster sera YELLOW au lieu de GREEN. Pas de perte de données, mais cela pourrait être mieux que certains serveurs ne peuvent pas être affectés.

Dès que le nœud que la gauche est de retour, il va rejoindre le cluster de nouveau et les répliques seront de nouveau attribué. Le fragment existant sur le second nœud peut être chargé, mais ils doivent être synchronisés avec les autres fragments, que les opérations d'écriture le plus probable est arrivé alors que le nœud a vers le bas. À la fin de cette opération, l'état du cluster deviendra GREEN.

Espérons que cela clarifie les choses pour vous.

37voto

ppearcy Points 793

Un index est divisé en fragments afin de les distribuer et d'échelle.

Les répliques sont des copies de fragments et de fournir la fiabilité si un nœud est perdu. Il y a souvent confusion dans ce numéro, car réplique count == 1 signifie que le cluster doit avoir la main et d'une copie répliquée de l'éclat disponible pour être dans l'état vert.

Pour les répliques d'être créé, vous devez avoir au moins 2 nœuds de votre cluster.

Vous pouvez trouver les définitions ici plus facile à comprendre: http://www.elasticsearch.org/guide/reference/glossary/

Meilleures Salutations, Paul

22voto

jyu Points 49

Si vous n’aimez vraiment de le voir jaune. vous pouvez définir les répliques à zéro :

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