В чем разница между кластером и нодами в Hadoop?

«В чем разница между кластером и нодами в Hadoop?» — вопрос из категории Hadoop и HDFS, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В архитектуре Hadoop:

  • Нода (узел) — это отдельный физический или виртуальный сервер (машина), который является частью кластера. Каждая нода выполняет определенные роли и имеет собственные вычислительные ресурсы (CPU, RAM, диск).
  • Кластер — это совокупность всех взаимосвязанных нод, работающих вместе как единая система для распределенной обработки и хранения данных.

Аналогия: Если кластер — это фабрика, то ноды — это отдельные станки и цеха на этой фабрике.

Типы нод в классическом Hadoop (HDFS + MapReduce/YARN):

  1. Для хранения (HDFS):

    • NameNode (Master): Одна или две (при HA) ноды. Управляет метаданными файловой системы: иерархия namespace, mapping блоков файлов на DataNodes.
    • DataNode (Worker): Множество нод. Хранят фактические данные в виде блоков (обычно 128/256 МБ) и обслуживают запросы на чтение/запись.
  2. Для вычислений (YARN):

    • ResourceManager (Master): Управляет ресурсами всего кластера (CPU, память) и планирует выполнение приложений.
    • NodeManager (Worker): Запускается на каждой ноде с DataNode. Управляет ресурсами на своей ноде и исполняет задачи (контейнеры), назначенные ResourceManager'ом.

Пример конфигурации кластера:

Кластер из 10 машин:
- 2 машины в роли мастер-нод: NameNode (Active), NameNode (Standby), ResourceManager
- 8 машин в роли воркер-нод: на каждой запущены DataNode и NodeManager

Из моего опыта: При развертывании кластера важно правильно распределить роли. Мастер-ноды требуют надежного железа (особенно RAM для NameNode, хранящего метаданные в памяти), в то время как воркер-ноды масштабируются горизонтально — добавляя новые, мы увеличиваем и хранилище, и вычислительную мощность. Современные дистрибутивы вроде Cloudera или Hortonworks позволяют разносить сервисы мастер-нод на разные физические машины для отказоустойчивости.