Pour les personnes qui découvrent Apache HBase (version 0.90 et versions ultérieures), la configuration des ports réseau utilisés par le système peut être un peu écrasante.
Dans cet article de blog, vous apprendrez tous les ports TCP utilisés par les différents processus HBase et comment et pourquoi ils sont utilisés (tous en un seul endroit) - pour aider les administrateurs à dépanner et configurer les paramètres du pare-feu, et aider les nouveaux développeurs à déboguer.
Un cluster HBase typique possède un maître actif, un ou plusieurs maîtres de sauvegarde et une liste de serveurs de région. Les maîtres de secours sont des maîtres de secours attendant d'être le prochain maître actif. Avant d'être actifs, ils n'écoutent sur aucun port. (En savoir plus sur le fonctionnement de l'évolutivité HBase ici.)
Chaque serveur du cluster écoute sur un port principal les demandes des clients et/ou d'autres serveurs HBase. Chaque serveur dispose également d'un serveur d'interface utilisateur Web Jetty intégré.
Le schéma suivant montre la communication entre les différents composants. (Les composants bleus appartiennent au cluster HBase, généralement derrière un pare-feu ; les composants gris sont des clients externes, généralement à l'extérieur du pare-feu du cluster HBase ; le composant vert est un navigateur Web, généralement également à l'extérieur du pare-feu.)
- Les applications clientes communiquent avec Apache ZooKeeper pour connaître l'emplacement du maître et du serveur de méta-région (la région racine est supprimée dans HBase version 0.96).
- Les applications clientes communiquent avec les serveurs régionaux pour lire/écrire dans/analyser une table.
- Les applications clientes communiquent avec le maître pour obtenir des informations sur une table existante, créer/supprimer dynamiquement une table, ajouter/supprimer une famille de colonnes.
- Le maître communique avec les serveurs de région pour ouvrir/fermer/déplacer/diviser/vider/compacter les régions.
- Le maître place les données dans ZooKeeper pour stocker l'emplacement du serveur maître et de la méta-région actif, créer des tâches de fractionnement de journal, suivre les statuts des serveurs de région.
- Les serveurs de région lisent les données dans ZooKeeper pour diviser les journaux, suivre l'emplacement principal et l'état du cluster.
- Les serveurs de région communiquent avec le maître pour signaler les démarrages et les charges des serveurs de région.
- Parfois, les serveurs de région communiquent avec la méta-région pour vérifier l'état d'une région, créer de nouvelles régions filles lors du fractionnement de région.
- Les clients REST communiquent avec les serveurs REST pour accéder à HBase.
- Les clients Thrift communiquent avec les serveurs Thrift pour accéder à HBase.
- Les utilisateurs accèdent à l'interface utilisateur Web principale à partir de navigateurs.
- Les utilisateurs accèdent à l'interface utilisateur Web des serveurs régionaux à partir des navigateurs.
- Les utilisateurs accèdent à l'interface utilisateur Web des serveurs REST à partir des navigateurs.
- Les utilisateurs accèdent à l'interface utilisateur Web des serveurs Thrift à partir des navigateurs.
Certains clusters HBase peuvent avoir une liste de serveurs REST ou Thrift. Le serveur REST et le serveur Thrift sont facultatifs; ils ne sont nécessaires que si vous souhaitez fournir un accès REST/Thrift à votre cluster HBase. Pour HBase, ce ne sont que d'autres applications clientes. Tout comme les autres serveurs HBase, ils écoutent également un port principal pour les demandes des clients et un port d'interface utilisateur Web.
Le tableau suivant montre les ports utilisés par les applications clientes pour communiquer avec un cluster HBase, les utilisateurs pour vérifier les informations du cluster et les différents composants HBase pour communiquer entre eux.
Composant | Paramètre de configuration | Valeur par défaut | Lieux utilisés |
ZooKeeper |
| 2181 | 1,5,6 |
Maître |
| 60000 | 3,7 |
Maître |
| 60010 | 11 |
Serveur régional |
| 60020 | 2,4,8 |
Serveur régional |
| 60030 | 12 |
Serveur REST |
| 8080 | 9 |
Serveur REST |
| 8085 | 13 |
Thrift server |
| 9090 | 10 |
Thrift server |
| 9095 | 14 |
* Introduit dans HBase version 0.94.5. Ils peuvent également être spécifiés avec l'option de ligne de commande --infoport
lors du démarrage du serveur correspondant.
** Ils peuvent également être spécifiés avec l'option de ligne de commande -p
lors du démarrage du serveur correspondant.
Un port n'est pas répertorié dans le tableau - le port du nœud de nom HDFS - car il n'y a pas ici de paramètre distinct pour celui-ci. Il est configuré en tant que partie de "hbase.root" (par exemple, "hdfs://namenode.foobar.com:35802/hbase") avec le port HDFS NameNode configuré sur 35802. Sauf indication contraire dans la valeur de " hbase.root", la valeur par défaut est 8020.
Outre le port principal, chaque serveur du cluster (à l'exception de ZooKeeper) écoute également un port d'interface utilisateur Web. Une interface utilisateur Web est un serveur Jetty intégré dans son serveur correspondant. L'interface utilisateur Web fournit des informations lisibles par l'homme sur le serveur correspondant, par exemple, le vidage du thread et les journaux locaux. L'interface utilisateur Web principale contient des liens vers toutes les interfaces utilisateur Web du serveur de région, ce qui en fait le point d'entrée idéal pour vérifier l'état actuel d'un cluster HBase.
Les serveurs REST/Thrift sont des proxys facultatifs pour HBase. Ils communiquent avec HBase de la même manière que les autres applications clientes HBase. Cependant, ils sont généralement déployés à l'intérieur du cluster HBase, avec d'autres serveurs HBase.
Les applications clientes sont généralement déployées hors du cluster HBase. Les clients REST/Thrift sont également déployés en dehors du cluster. Si le cluster HBase est derrière un pare-feu, ces ports correspondants doivent être ouverts par défaut :
Pour autoriser l'accès à l'application client :
- 2181 (hbase.zookeeper.property.clientPort)
- 60000 (hbase.master.port)
- 60020 (hbase.regionserver.port)
Pour autoriser l'accès au client REST/Thrift :
- 8080 (hbase.rest.port)
- 9090 (hbase.regionserver.thrift.port)
Si l'accès à l'interface utilisateur Web depuis l'extérieur du pare-feu est autorisé, les ports de l'interface utilisateur Web correspondants doivent également être ouverts :
- 60010 (hbase.master.info.port)
- 60030 (hbase.regionserver.info.port)
- 8085 (hbase.rest.info.port)
- 9095 (hbase.thrift.info.port)
Conclusion
Dans cet article, vous avez obtenu un résumé des ports utilisés par les composants internes de HBase, les applications clientes et par les utilisateurs/administrateurs, organisés par cas d'utilisation.
Cependant, étant donné que HBase s'exécute au-dessus de HDFS, il est également important de connaître les ports HDFS. Pour exécuter MapReduce avec HBase, vous devez également connaître les ports MapReduce. Pour ces ports liés à Hadoop, veuillez vous référer à Hadoop Default Ports Quick Reference .
Jimmy Xiang est ingénieur logiciel au sein de l'équipe Platform.
> Vous avez des questions ? Publiez-les sur le Forum de la communauté pour HBase.