# Hadoop Architecture

## Master Slave

В основе архитектуры Hadoop лежит идея **master-slave**.

В Hadoop, когда размер данных большой, данные хранятся на нескольких серверах. Каждый сервер работает как нода, поэтому каждый узел обладает вычислительной мощностью.

**NameNode** - работает как мастер в Hadoop. Namenode хранит метаданные, то есть количество блоков, реплик и других деталей. Метаданные хранятся в памяти мастера. NameNode назначает задачи на slave node.

> NameNode должен быть развернут на надежном оборудовании, поскольку он является центральным элементом HDFS.

**DataNode** - работает в качестве slave в Hadoop. В HDFS DataNode отвечает за хранение фактических данных. А также DataNode выполняет операции чтения и записи согласно запросу клиентов.

> DataNode также могут быть развернуты на обычном оборудовании.

![Master Slave Architecture](https://3047264112-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LoWAdFshQklZGvmhPe2%2F-LoWFVP3aLEBZCu-0gLr%2F-LoWFW4UPs4FgR5SygbA%2FIMG_3.png?generation=1568221042855285\&alt=media)

## High availability

ResourceManager HA реализован через архитектуру Active/Standby; В любой момент времени один из RM активен, а один или несколько RM находятся в режиме ожидания; Триггер для перехода в активный режим поступает либо от администратора (yarn rmadmin), либо от встроенного контроллера отработки отказов, когда включено автоматическое переключение;

В случае автоматического подхода ActiveStandbyElector на основе Zookeeper решает, какой RM должен быть активным. Когда Активный RM отключается или перестает отвечать на запросы, другой RM автоматически выбирается Активным.

## Typical topology

* DataNodes, NodeManagers and RegionServers, как правило, развернуты совместно, чтобы следовать стратегии **Data Locality**
* Рекомендуется иметь как минимум 3 копии данных, расположенных в отдельных стойках (separate **racks**)
* Рекомендуется добавлять узлы данных в соответствии с коэффициентом репликации в отдельные стойки.

![Data Locality](https://3047264112-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LoWAdFshQklZGvmhPe2%2F-LoWFVP3aLEBZCu-0gLr%2F-LoWFW4W-j0Ke_JRSkdg%2FIMG_4.png?generation=1568221043566383\&alt=media)
