For de personer, der er nye til Apache HBase (version 0.90 og nyere), kan konfigurationen af netværksporte, der bruges af systemet, være lidt overvældende.
I dette blogindlæg lærer du alle de TCP-porte, der bruges af de forskellige HBase-processer, og hvordan og hvorfor de bruges (alt sammen på ét sted) - for at hjælpe administratorer med at fejlfinde og opsætte firewall-indstillinger og hjælpe nye udviklere med at fejlsøge.
En typisk HBase-klynge har en aktiv master, en eller flere backup-mastere og en liste over regionsservere. Backup-masterne er standby-mastere, der venter på at blive den næste aktive. Før de er aktive, lytter de ikke på nogen porte. (Lær mere om, hvordan HBase-skalerbarhed fungerer her.)
Hver server i klyngen lytter til en hovedport for anmodninger fra klienter og/eller andre HBase-servere. Hver server har også en integreret Jetty-web-UI-server.
Følgende diagram viser kommunikationen mellem forskellige komponenter. (Blå komponenter tilhører HBase-klyngen, normalt bag en firewall; grå komponenter er eksterne klienter, normalt uden for HBase-klyngens firewall; grøn komponent er en webbrowser, normalt også uden for firewallen.)
- Klientapplikationer taler med Apache ZooKeeper for at finde ud af placeringen af master- og metaregionserveren (rodregionen er fjernet i HBase version 0.96).
- Kundeapplikationer taler med regionsservere for at læse fra/skrive til/scanne en tabel.
- Klientapplikationer taler med masteren for at få information om en eksisterende tabel, dynamisk oprette/fjerne en tabel, tilføje/fjerne en kolonnefamilie.
- Masteren taler med regionsservere for at åbne/lukke/move/split/flush/compact regioner.
- Masteren lægger data i ZooKeeper for at gemme den aktive master- og metaregionserverplacering, oprette logopdelingsopgaver, spore regionservernes status.
- Regionsservere læser data i ZooKeeper for at foretage logopdeling, spore masterplaceringen og klyngestatussen.
- Regionsservere taler med masteren for at rapportere regionsserver opstart, indlæsninger.
- Af og til taler regionsservere med metaregion for at kontrollere status for en region, oprette nye datterregioner i regionopdeling.
- REST-klienter taler med REST-servere for at få adgang til HBase.
- Thrift-klienter taler med Thrift-servere for at få adgang til HBase.
- Brugere får adgang til hovedweb-UI fra browsere.
- Brugere får adgang til regionsserveres web-UI fra browsere.
- Brugere får adgang til REST-servernes web-UI fra browsere.
- Brugere får adgang til Thrift-servernes web-UI fra browsere.
Nogle HBase-klynger kan have en liste over REST- eller Thrift-servere. Både REST-serveren og Thrift-serveren er valgfri; de er kun nødvendige, hvis du vil give REST/Thrift-adgang til din HBase-klynge. For HBase er de blot andre klientapplikationer. Ligesom andre HBase-servere lytter de også til en hovedport for klientanmodninger og en web-UI-port.
Følgende tabel viser de porte, der bruges af klientapplikationer til at tale med en HBase-klynge, brugere til at kontrollere klyngeoplysninger og forskellige HBase-komponenter til at tale med hinanden.
Komponent | Konfigurationsparameter | Standardværdi | Brugte steder |
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 |
* Introduceret i HBase version 0.94.5. De kan også specificeres med kommandolinjeindstillingen --infoport
ved opstart af den tilsvarende server.
** De kan også angives med kommandolinjeindstillingen -p
ved opstart af den tilsvarende server.
Én port er ikke angivet i tabellen - HDFS-navnenodeporten - fordi her ikke er en separat parameter for den. Den er konfigureret som en del af "hbase.root" (f.eks. "hdfs://namenode.foobar.com:35802/hbase") med HDFS NameNode-porten konfigureret til at være 35802. Medmindre andet er angivet i værdien af " hbase.root", er standarden 8020.
Udover hovedporten lytter hver server i klyngen (undtagen ZooKeeper) også til en web-UI-port. En web-UI er en indlejret Jetty-server i dens tilsvarende server. Web-brugergrænsefladen giver menneskelig læsbar information om den tilsvarende server - for eksempel tråddumpet og lokale logfiler. Master-web-UI'en har links til alle regionsserver-web-UI'er, hvilket gør det til det perfekte indgangspunkt til at kontrollere den aktuelle status for en HBase-klynge.
REST/Thrift-serverne er valgfri proxyer til HBase. De taler til HBase på samme måde som andre HBase-klientapplikationer gør. De er dog normalt installeret inde i HBase-klyngen sammen med andre HBase-servere.
Klientapplikationer implementeres normalt ud af HBase-klyngen. REST/Thrift-klienter er også implementeret uden for klyngen. Hvis HBase-klyngen er bag en firewall, skal disse tilsvarende porte være åbne som standard:
Sådan tillades adgang til klientapplikationer:
- 2181 (hbase.zookeeper.property.clientPort)
- 60000 (hbase.master.port)
- 60020 (hbase.regionserver.port)
Sådan tillades REST/Thrift-klientadgang:
- 8080 (hbase.rest.port)
- 9090 (hbase.regionserver.thrift.port)
Hvis web-UI-adgang fra en firewall er tilladt, bør de tilsvarende web-UI-porte også være åbne:
- 60010 (hbase.master.info.port)
- 60030 (hbase.regionserver.info.port)
- 8085 (hbase.rest.info.port)
- 9095 (hbase.thrift.info.port)
Konklusion
I dette indlæg har du en oversigt over de porte, der bruges af HBase interne komponenter, klientapplikationer og af brugere/administratorer, organiseret efter use case.
Men fordi HBase kører oven på HDFS, er det også vigtigt at kende til HDFS-porte. For at køre MapReduce med HBase skal du også kende MapReduce-portene. For disse Hadoop-relaterede porte, se venligst Hadoop Default Ports Quick Reference .
Jimmy Xiang er softwareingeniør på platformsteamet.
> Har du spørgsmål? Send dem til fællesskabsforum for HBase.