За тези хора, които са нови в Apache HBase (версия 0.90 и по-нова), конфигурацията на мрежовите портове, използвани от системата, може да бъде малко непосилна.
В тази публикация в блога ще научите всички TCP портове, използвани от различните процеси на HBase, и как и защо се използват (всички на едно място) – за да помогнете на администраторите да отстранят неизправности и да настроят настройките на защитната стена и да помогнете на новите разработчици как да отстраняват грешки.
Типичният HBase клъстер има един активен главен, един или няколко резервни глави и списък с регионални сървъри. Резервните глави са главни в режим на готовност, които чакат да бъдат следващият активен. Преди да са активни, те не слушат никакви портове. (Научете повече за това как работи мащабируемостта на HBase тук.)
Всеки сървър в клъстера слуша основен порт за заявки от клиенти и/или други HBase сървъри. Всеки сървър също има вграден Jetty уеб UI сървър.
Следващата диаграма показва комуникацията между различните компоненти. (Сините компоненти принадлежат към клъстера HBase, обикновено зад защитна стена; сивите компоненти са външни клиенти, обикновено извън защитната стена на клъстера HBase; зеленият компонент е уеб браузър, обикновено също извън защитната стена.)
- Клиентските приложения разговарят с Apache ZooKeeper, за да разберат местоположението на главния и сървъра на мета региона (основният регион е премахнат в HBase версия 0.96).
- Клиентските приложения разговарят с регионалните сървъри, за да четат/запишат в/сканират таблица.
- Клиентските приложения разговарят с главния, за да получат информация за съществуваща таблица, динамично да създават/премахват таблица, да добавят/премахват семейство колони.
- Главният разговаря със сървърите на региона за отваряне/затваряне/преместване/разделяне/изтриване/компактиране на региони.
- Мастерът поставя данни в ZooKeeper, за да съхранява местоположението на активния главен и метарегионен сървър, да създава задачи за разделяне на регистрационни файлове, да проследява статусите на сървърите на региона.
- Регионалните сървъри четат данни в ZooKeeper, за да извършват разделяне на регистрационни файлове, да проследяват главното местоположение и състоянието на клъстера.
- Сървърите на региона разговарят с главния, за да докладват за стартирания на регионални сървъри, натоварвания.
- Понякога регионалните сървъри разговарят с метарегион, за да проверят състоянието на даден регион, да създават нови дъщерни региони при разделяне на региони.
- Клиентите на REST разговарят с REST сървъри за достъп до HBase.
- Клиентите на Thrift разговарят със сървърите на Thrift за достъп до HBase.
- Потребителите имат достъп до главния уеб интерфейс от браузъри.
- Потребителите имат достъп до уеб потребителския интерфейс на регионалните сървъри от браузъри.
- Потребителите имат достъп до уеб потребителския интерфейс на REST сървърите от браузъри.
- Потребителите имат достъп до уеб потребителския интерфейс на Thrift сървърите от браузъри.
Някои HBase клъстери може да имат списък с REST или Thrift сървъри. И двата REST сървъра и Thrift сървъра са по избор; те са необходими само ако искате да предоставите REST/Thrift достъп до вашия HBase клъстер. За HBase те са просто други клиентски приложения. Подобно на други сървъри HBase, те също слушат основен порт за клиентски заявки и порт за уеб интерфейс.
Следващата таблица показва портовете, използвани от клиентските приложения, за да разговарят с HBase клъстер, потребителите за проверка на информацията за клъстера и различните компоненти на HBase, за да разговарят помежду си.
Компонент | Конфигурационен параметър | Стойност по подразбиране | Използвани места |
ZooKeeper |
| 2181 | 1,5,6 |
Master |
| 60000 | 3,7 |
Master |
| 60010 | 11 |
Регионален сървър |
| 60020 | 2,4,8 |
Регионален сървър |
| 60030 | 12 |
REST сървър |
| 8080 | 9 |
REST сървър |
| 8085 | 13 |
Сервер за пестеливост |
| 9090 | 10 |
Сервер за пестеливост |
| 9095 | 14 |
* Въведено в HBase версия 0.94.5. Те могат да бъдат посочени и с опцията на командния ред --infoport
при стартиране на съответния сървър.
** Те могат да бъдат посочени и с опцията на командния ред -p
при стартиране на съответния сървър.
Един порт не е посочен в таблицата — портът на нода на HDFS — защото тук няма отделен параметър за него. Той е конфигуриран като част от “hbase.root” (например, “hdfs://namenode.foobar.com:35802/hbase”) с порта на HDFS NameNode, конфигуриран да бъде 35802. Освен ако не е посочено друго в стойността на “ hbase.root“, по подразбиране е 8020.
Освен основния порт, всеки сървър в клъстера (с изключение на ZooKeeper) също слуша порт за уеб потребителски интерфейс. Уеб потребителският интерфейс е вграден Jetty сървър в съответния сървър. Уеб потребителският интерфейс предоставя четима от човека информация за съответния сървър — например дъмп на нишките и локални регистрационни файлове. Главният уеб потребителски интерфейс има връзки към всички уеб потребителски интерфейси на сървъра на региона, което го прави идеалната входна точка за проверка на текущото състояние на клъстер на HBase.
Сървърите REST/Thrift са незадължителни прокси сървъри на HBase. Те разговарят с HBase по същия начин, по който правят други клиентски приложения на HBase. Те обаче обикновено се разполагат в клъстера HBase, заедно с други сървъри на HBase.
Клиентските приложения обикновено се разгръщат извън клъстера HBase. Клиентите на REST/Thrift също се разполагат извън клъстера. Ако клъстерът HBase е зад защитна стена, тези съответни портове трябва да са отворени по подразбиране:
За да разрешите достъп до клиентско приложение:
- 2181 (hbase.zookeeper.property.clientPort)
- 60 000 (hbase.master.port)
- 60020 (hbase.regionserver.port)
За да разрешите достъп на REST/Thrift клиент:
- 8080 (hbase.rest.port)
- 9090 (hbase.regionserver.thrift.port)
Ако е разрешен достъп до уеб потребителски интерфейс извън защитната стена, съответните портове за уеб потребителски интерфейс също трябва да са отворени:
- 60010 (hbase.master.info.port)
- 60030 (hbase.regionserver.info.port)
- 8085 (hbase.rest.info.port)
- 9095 (hbase.thrift.info.port)
Заключение
В тази публикация имате обобщение на портовете, използвани от вътрешните компоненти на HBase, клиентските приложения и от потребителите/администраторите, организирани по случай на употреба.
Въпреки това, тъй като HBase работи върху HDFS, също така е важно да знаете HDFS портовете. За да стартирате MapReduce с HBase, трябва да знаете и портовете на MapReduce. За тези свързани с Hadoop портове, моля, вижте Бърз справочник за портовете по подразбиране на Hadoop .
Jimmy Xiang е софтуерен инженер в екипа на платформата.
> Имате въпроси? Публикувайте ги във форума на общността за HBase.