Für diejenigen, die neu bei Apache HBase (Version 0.90 und höher) sind, kann die Konfiguration der vom System verwendeten Netzwerkports etwas überwältigend sein.
In diesem Blog-Beitrag erfahren Sie alle TCP-Ports, die von den verschiedenen HBase-Prozessen verwendet werden, und wie und warum sie verwendet werden (alles an einem Ort), um Administratoren bei der Fehlerbehebung und Einrichtung von Firewall-Einstellungen zu helfen und neuen Entwicklern beim Debuggen zu helfen.
Ein typischer HBase-Cluster hat einen aktiven Master, einen oder mehrere Backup-Master und eine Liste von Regionsservern. Die Backup-Master sind Standby-Master, die darauf warten, der nächste aktive zu sein. Bevor sie aktiv sind, hören sie auf keinen Port. (Weitere Informationen zur Funktionsweise der HBase-Skalierbarkeit finden Sie hier.)
Jeder Server im Cluster überwacht einen Hauptport auf Anfragen von Clients und/oder anderen HBase-Servern. Jeder Server hat auch einen eingebetteten Jetty-Web-UI-Server.
Das folgende Diagramm zeigt die Kommunikation zwischen verschiedenen Komponenten. (Blaue Komponenten gehören zum HBase-Cluster, normalerweise hinter einer Firewall; graue Komponenten sind externe Clients, normalerweise außerhalb der HBase-Cluster-Firewall; grüne Komponente ist ein Webbrowser, normalerweise auch außerhalb der Firewall.)
- Client-Anwendungen kommunizieren mit Apache ZooKeeper, um den Standort des Master- und Metaregion-Servers herauszufinden (die Stammregion wurde in HBase-Version 0.96 entfernt).
- Client-Anwendungen kommunizieren mit Regionsservern, um aus einer Tabelle zu lesen/zu schreiben/zu scannen.
- Client-Anwendungen kommunizieren mit dem Master, um Informationen über eine vorhandene Tabelle zu erhalten, eine Tabelle dynamisch zu erstellen/entfernen, eine Spaltenfamilie hinzuzufügen/zu entfernen.
- Der Master kommuniziert mit Regionsservern, um Regionen zu öffnen/schließen/verschieben/aufteilen/leeren/kompaktieren.
- Der Master stellt Daten in ZooKeeper ein, um den Standort des aktiven Master- und Meta-Region-Servers zu speichern, Log-Splitting-Aufgaben zu erstellen und den Status der Region-Server zu verfolgen.
- Regionsserver lesen Daten in ZooKeeper, um Protokolle aufzuteilen, den Master-Standort und den Cluster-Status zu verfolgen.
- Regionsserver sprechen mit dem Master, um Starts und Lasten von Regionsservern zu melden.
- Gelegentlich sprechen Regionsserver mit der Metaregion, um den Status einer Region zu überprüfen und neue Tochterregionen bei der Regionsaufteilung zu erstellen.
- REST-Clients kommunizieren mit REST-Servern, um auf HBase zuzugreifen.
- Thrift-Clients kommunizieren mit Thrift-Servern, um auf HBase zuzugreifen.
- Benutzer greifen über Browser auf die Master-Web-Benutzeroberfläche zu.
- Benutzer greifen über Browser auf die Webbenutzeroberfläche von Regionsservern zu.
- Benutzer greifen über Browser auf die Web-Benutzeroberfläche von REST-Servern zu.
- Benutzer greifen über Browser auf die Webbenutzeroberfläche von Thrift-Servern zu.
Einige HBase-Cluster verfügen möglicherweise über eine Liste von REST- oder Thrift-Servern. Sowohl der REST-Server als auch der Thrift-Server sind optional; Sie werden nur benötigt, wenn Sie REST/Thrift-Zugriff auf Ihren HBase-Cluster bereitstellen möchten. Für HBase sind sie nur andere Client-Anwendungen. Genau wie andere HBase-Server hören sie auch auf einen Hauptport für Clientanfragen und einen Web-UI-Port.
Die folgende Tabelle zeigt die Ports, die von Client-Anwendungen verwendet werden, um mit einem HBase-Cluster zu kommunizieren, Benutzer, um Cluster-Informationen zu überprüfen, und verschiedene HBase-Komponenten, um miteinander zu kommunizieren.
Komponente | Konfigurationsparameter | Standardwert | Verwendete Orte |
ZooKeeper |
| 2181 | 1,5,6 |
Master |
| 60000 | 3,7 |
Master |
| 60010 | 11 |
Regionsserver |
| 60020 | 2,4,8 |
Regionsserver |
| 60030 | 12 |
REST-Server |
| 8080 | 9 |
REST-Server |
| 8085 | 13 |
Thrift-Server |
| 9090 | 10 |
Thrift-Server |
| 9095 | 14 |
* Eingeführt in HBase-Version 0.94.5. Sie können auch mit der Befehlszeilenoption --infoport
angegeben werden beim Hochfahren des entsprechenden Servers.
** Sie können auch mit der Kommandozeilenoption -p
angegeben werden beim Hochfahren des entsprechenden Servers.
Ein Port ist in der Tabelle nicht aufgeführt – der HDFS-Namenode-Port – da es hier keinen separaten Parameter dafür gibt. Es wird als Teil von „hbase.root“ konfiguriert (z. B. „hdfs://namenode.foobar.com:35802/hbase“), wobei der HDFS-NameNode-Port auf 35802 konfiguriert ist. Sofern im Wert von „nicht anders angegeben“ hbase.root“, der Standardwert ist 8020.
Neben dem Hauptport überwacht jeder Server im Cluster (mit Ausnahme von ZooKeeper) auch einen Web-UI-Port. Eine Web-UI ist ein eingebetteter Jetty-Server in seinem entsprechenden Server. Die Web-Benutzeroberfläche stellt für Menschen lesbare Informationen über den entsprechenden Server bereit – beispielsweise den Thread-Dump und lokale Protokolle. Die Master-Web-Benutzeroberfläche verfügt über Links zu allen Web-Benutzeroberflächen der Regionsserver, was sie zum perfekten Einstiegspunkt für die Überprüfung des aktuellen Status eines HBase-Clusters macht.
Die REST/Thrift-Server sind optionale Proxys für HBase. Sie kommunizieren mit HBase genauso wie andere HBase-Client-Anwendungen. Sie werden jedoch normalerweise innerhalb des HBase-Clusters zusammen mit anderen HBase-Servern bereitgestellt.
Clientanwendungen werden normalerweise außerhalb des HBase-Clusters bereitgestellt. REST/Thrift-Clients werden auch außerhalb des Clusters bereitgestellt. Wenn sich der HBase-Cluster hinter einer Firewall befindet, sollten diese entsprechenden Ports standardmäßig offen sein:
So gewähren Sie Client-Anwendungszugriff:
- 2181 (hbase.zookeeper.property.clientPort)
- 60000 (hbase.master.port)
- 60020 (hbase.regionserver.port)
So erlauben Sie den REST/Thrift-Client-Zugriff:
- 8080 (hbase.rest.port)
- 9090 (hbase.regionserver.thrift.port)
Wenn der Web-UI-Zugriff von außerhalb der Firewall erlaubt ist, sollten die entsprechenden Web-UI-Ports ebenfalls offen sein:
- 60010 (hbase.master.info.port)
- 60030 (hbase.regionserver.info.port)
- 8085 (hbase.rest.info.port)
- 9095 (hbase.thrift.info.port)
Schlussfolgerung
In diesem Beitrag erhalten Sie eine Zusammenfassung der Ports, die von internen HBase-Komponenten, Client-Anwendungen und von Benutzern/Administratoren verwendet werden, geordnet nach Anwendungsfällen.
Da HBase jedoch auf HDFS läuft, ist es auch wichtig, HDFS-Ports zu kennen. Um MapReduce mit HBase auszuführen, müssen Sie auch MapReduce-Ports kennen. Informationen zu diesen Hadoop-bezogenen Ports finden Sie in der Hadoop-Standardports-Kurzanleitung .
Jimmy Xiang ist Softwareentwickler im Plattformteam.
> Haben Sie Fragen? Posten Sie sie im Community-Forum für HBase.