web-dev-qa-db-fra.com

Pourquoi avons-nous besoin de ZooKeeper dans la pile Hadoop?

Je suis nouveau sur Hadoop/ZooKeeper. Je ne comprends pas le but de l'utilisation de ZooKeeper avec Hadoop, ZooKeeper écrit-il des données dans Hadoop? Sinon, pourquoi utilisons-nous ZooKeeper avec Hadoop?

33
user1099871

Hadoop 1.x n'utilise pas Zookeeper. HBase utilise zookeeper même dans les installations Hadoop 1.x.

Hadoop a également adopté Zookeeper à partir de la version 2.0.

Le but de Zookeeper est la gestion des clusters. Cela correspond à la philosophie générale de * nix consistant à utiliser des composants spécialisés plus petits - les composants de Hadoop qui souhaitent des capacités de clustering comptent donc sur Zookeeper plutôt que de développer les leurs.

Zookeeper est un stockage distribué qui offre les garanties suivantes (copié de page de présentation de Zookeeper ):

  • Cohérence séquentielle - Les mises à jour d'un client seront appliquées dans l'ordre où elles ont été envoyées.
  • Atomicité - Les mises à jour réussissent ou échouent. Aucun résultat partiel.
  • Image système unique - Un client verra la même vue du service quel que soit le serveur auquel il se connecte.
  • Fiabilité - Une fois qu'une mise à jour a été appliquée, elle persistera à partir de ce moment jusqu'à ce qu'un client écrase la mise à jour.
  • Rapidité - La vue des clients sur le système est garantie d'être à jour dans un certain délai.

Vous pouvez les utiliser pour implémenter différents " recettes " qui sont requis pour la gestion de cluster comme les verrous, l'élection des leaders, etc.

Si vous allez utiliser ZooKeeper vous-même, je vous recommande de jeter un œil à Curator de Netflix qui le rend plus facile à utiliser (par exemple, ils mettent en œuvre quelques recettes prêtes à l'emploi)

45

Zookeeper résout le problème de la coordination distribuée fiable, et hadoop est un système distribué, non?

Il y a un excellent article Algorithme Paxos que vous pouvez lire à ce sujet.

7
xiaofeng.li

De zookeeper page de documentation:

ZooKeeper est un service centralisé de gestion des informations de configuration, de dénomination, de synchronisation synchronisée et de services de groupe. Tous ces types de services sont utilisés sous une forme ou une autre par des applications distribuées.

Chaque fois qu'ils sont implémentés, il y a beaucoup de travail à faire pour corriger les bugs et les conditions de course qui sont inévitables. En raison de la difficulté de mettre en œuvre ce type de services, les applications les lésent généralement au départ, ce qui les rend fragiles en cas de changement et difficiles à gérer. Même lorsqu'elles sont effectuées correctement, différentes implémentations de ces services entraînent une complexité de gestion lorsque les applications sont déployées.

De hadoop page de documentation:

Le projet Apache ™ Hadoop® développe des logiciels open source pour une informatique distribuée fiable, évolutive.

La bibliothèque de logiciels Apache Hadoop est un cadre qui permet le traitement distribué de grands ensembles de données sur des clusters d'ordinateurs à l'aide de modèles de programmation simples.

Concernant votre requête:

Pourquoi avons-nous besoin de ZooKeeper dans Hadoop Stack?

Le facteur de liaison est le traitement distribué et la haute disponibilité.

par exemple. Processus de basculement Hadoop Namenode.

La haute disponibilité Hadoop est conçue autour de Namenode actif et Namenode de secours pour le processus de basculement. À tout moment, vous ne devriez pas avoir deux maîtres (Namenodes actifs) en même temps.

Depuis le lien de documentation Apache sur HDFSHighAvailableWithQJM :

Il est essentiel pour le bon fonctionnement d'un cluster HA qu'un seul des nœuds NameNodes soit actif à la fois. Sinon, l'état de l'espace de noms divergerait rapidement entre les deux, risquant de perdre des données ou d'autres résultats incorrects. Afin de garantir cette propriété et d'empêcher le soi-disant "scénario de cerveau divisé", les JournalNodes ne permettront jamais qu'un seul NameNode d'être un écrivain à la fois.

Lors d'un basculement, le NameNode qui doit devenir actif prendra simplement le rôle d'écriture dans les JournalNodes, ce qui empêchera efficacement l'autre NameNode de continuer à l'état Actif, permettant au nouvel Actif de procéder en toute sécurité au basculement.

Zookeeper a été utilisé pour éviter le scénario Split-brain. Vous pouvez trouver le rôle de Zookeeper dans la question ci-dessous:

Comment fonctionne le processus de basculement Hadoop Namenode?

6
Ravindra babu