Ответ
В архитектуре Hadoop:
- Нода (узел) — это отдельный физический или виртуальный сервер (машина), который является частью кластера. Каждая нода выполняет определенные роли и имеет собственные вычислительные ресурсы (CPU, RAM, диск).
- Кластер — это совокупность всех взаимосвязанных нод, работающих вместе как единая система для распределенной обработки и хранения данных.
Аналогия: Если кластер — это фабрика, то ноды — это отдельные станки и цеха на этой фабрике.
Типы нод в классическом Hadoop (HDFS + MapReduce/YARN):
-
Для хранения (HDFS):
- NameNode (Master): Одна или две (при HA) ноды. Управляет метаданными файловой системы: иерархия namespace, mapping блоков файлов на DataNodes.
- DataNode (Worker): Множество нод. Хранят фактические данные в виде блоков (обычно 128/256 МБ) и обслуживают запросы на чтение/запись.
-
Для вычислений (YARN):
- ResourceManager (Master): Управляет ресурсами всего кластера (CPU, память) и планирует выполнение приложений.
- NodeManager (Worker): Запускается на каждой ноде с DataNode. Управляет ресурсами на своей ноде и исполняет задачи (контейнеры), назначенные ResourceManager'ом.
Пример конфигурации кластера:
Кластер из 10 машин:
- 2 машины в роли мастер-нод: NameNode (Active), NameNode (Standby), ResourceManager
- 8 машин в роли воркер-нод: на каждой запущены DataNode и NodeManager
Из моего опыта: При развертывании кластера важно правильно распределить роли. Мастер-ноды требуют надежного железа (особенно RAM для NameNode, хранящего метаданные в памяти), в то время как воркер-ноды масштабируются горизонтально — добавляя новые, мы увеличиваем и хранилище, и вычислительную мощность. Современные дистрибутивы вроде Cloudera или Hortonworks позволяют разносить сервисы мастер-нод на разные физические машины для отказоустойчивости.