Apache ZooKeeper est un système open-source de synchronisation et de coordination des systèmes distribués. Découvrez sa présentation, son utilité, ses avantages et son fonctionnement.
Lors de l’apparition des applications distribuées, leur implémentation nécessitait de résoudre de nombreux bugs. C’est la raison pour laquelle Hadoop ZooKeeper a été créé pour maintenir la coordination et la synchronisation au sein d’un cluster Hadoop.
Par le passé, ZooKeeper était un sous-projet de Hadoop. Toutefois, il s’agit désormais d’un projet à part entière de la Apache Software Foundation. Il est désormais nommé Apache ZooKeeper. Pour l’anecdote, selon Hadoop, ce service est appelé » zookeeper » car la coordination des services distribués est semblable à un zoo.
Apache ZooKeeper : qu’est-ce que c’est ? A quoi ça sert ?
Prenons l’exemple d’un cluster Hadoop constitué de plus de 500 serveurs. Compte tenu du nombre de serveurs, une gestion centralisée du cluster s’impose pour les services de noms, de synchronisation ou pour la configuration et bien plus encore. En utilisant ZooKeeper, il est possible d’éviter d’avoir à développer des services de synchronisation en partant de zéro.
Le projet open-source Apache ZooKeeper permet de maintenir des informations de configuration. Il propose aussi des services synchronisés et des services de groupe pour une large variété d’applications distribuées. Cette technologie est déployée sur un cluster Hadoop pour administrer l’infrastructure.
ZooKeeper facilite la synchronisation entre les process en maintenant un statut sur les serveurs ZooKeeper qui stocke l’information sur des fichiers de log locaux. Les serveurs ZooKeeper sont en mesure de supporter un large cluster Hadoop. Chaque machine client communique avec l’un des serveurs pour retrouve l’information.
ZooKeeper : quels sont les avantages ?
ZooKeeper présente plusieurs avantages. Il se distingue tout d’abord par sa simplicité, puisque la coordination est aidée par un espace de noms partagé. Il s’agit par ailleurs d’une technologie très fiable, puisque le système continue à fonctionner même si l’un des noeuds tombe en panne.
Un système de marquage temporel permet aussi de maintenir de l’ordre entre les mises à jour, qui sont classées par ordre chronologique. Il s’agit aussi d’un système qui brille par sa vitesse. Enfin, l’avantage de ZooKeeper est sa scalabilité. Il est possible d’augmenter les performances en déployant davantage de machines.
Apache ZooKeeper : comment ça fonctionne ?
ZooKeeper est donc un outil distribué utilisé pour la configuration et la synchronisation de larges services distribués. Toutefois, il s’agit aussi d’une application distribuée. Comme toutes les applications distribuées, ZooKeeper est donc composé d’un serveur et d’un client. Le serveur est distribué, et son interface centralisée permet aux clients de se connecter au service.
Les clients sont des noeuds (par exemple des machines) qui utilisent le service, et les serveurs sont les noeuds qui délivrent le service. Une collection de serveurs ZooKeeper forme ce que l’on appelle un ensemble ZooKeeper.
L’un des serveurs est désigné comme leader, puis l’ensemble ZooKeeper se lance. Il attend ensuite que les clients se connectent. Chaque client ZooKeeper est connecté à un serveur ZooKeeper. Chaque serveur ZooKeeper peut prendre en charge un grand nombre de connexions client simultanément.
Chaque client envoie périodiquement des pings au serveur ZooKeeper auquel il est connecté pour lui signaler qu’il est actif et connecté. Le serveur ZooKeeper en question répond avec une approbation du ping, signalant qu’il est également actif. Si le client ne reçoit pas d’approbation du serveur, il se connecte à un autre serveur de l’ensemble.
Le modèle de données de ZooKeeper est composé de Znodes (ZooKeeper Data Nodes). Ces noeuds s’apparentent aux fichiers d’un système UNIX traditionnel, mais la différence est qu’ils peuvent avoir des noeuds » enfants « . On peut aussi les considérer comme des répertoires pouvant avoir des données qui leur sont associées.
La hiérarchie des Znodes est stockée en mémoire au sein de chaque serveur ZooKeeper. Ceci permet des réponses rapides et scalables aux lectures en provenance des clients. Chaque serveur ZooKeeper maintient aussi un log de transaction sur le disque pour les requêtes d’écriture.
- Partager l'article :