Как общаются друг с другом компоненты HDFS и почему это так важно для Big Data проектов

кластер, Большие данные, Big Data, Hadoop, Apache, администрирование, инфраструктура

Благодаря архитектурным особенностям распределенной файловой системы Hadoop, допустимые файловые операции в ней отличаются от возможных действий с файлами на локальных системах. В этой статье мы рассмотрим файловые операции в HDFS и взаимодействие ее компонентов: узлов данных и сервера имен с клиентами — пользователями или приложениями.

Файловые операции HDFS

В отличие от локальных файловых систем, в HDFS (Hadoop Distributed File System) невозможно изменение (модификация) файла. Файлы в HDFS могут быть записаны лишь однажды, причем одновременно запись в файл осуществляет только один процесс. Поскольку HDFS используется для Big Data, эта файловая система ориентирована на большой размер файлов (>10GB). При этом файлы состоят из блоков, размер которых тоже больше, чем у других файловых систем: >64MB [1].

Итак, в HDFS допустимы только следующие операции с файлами:

За все файловые операции отвечает сервер имен NameNode. Операции с конкретными файлами находятся в зоне ответственности узла данных DataNode, на котором эти файлы находятся [2]. Подробности каждой из этих операций мы раскрыли в отдельных статьях.

кластер, Большие данные, Big Data, Hadoop, Apache, администрирование, инфраструктура
Схема взаимодействия узлов данных с сервером имен HDFS

Взаимодействие клиента и кластера

Общение между узлами данных и сервером имен, а также взаимодействие с клиентами осуществляется по протоколам на основе TCP/IP: DataNode Protocol и ClientProtocol соответственно [2]. Оба протокола используют технологию удаленного вызова процедур (Remote Procedure Call, RPC), которая расширяет локальный механизм передачи управления и данных внутри программы на распределенный режим (через сеть).

RPC-вызовы являются асимметричными (только 1 из взаимодействующих сторон инициирует общение) и синхронными (выполнение вызывающей процедуры приостанавливается с момента выдачи запроса и возобновляется лишь после возврата из вызываемой процедуры).

Из-за того, что вызывающая и вызываемая процедуры находятся на разных компьютерах, невозможно использовать разделяемую память, поэтому все параметры RPC-вызова копируются с одного сервера на другой в виде последовательности битов, т.е. сериализуются [3].

Узлы данных DataNode взаимодействуют друг с другом по протоколу DataNode Protocol. Сервер имен NameNode никогда сам не инициирует RPC-вызовы, а лишь отвечает на RPC-вызовы узлов данных и клиентов [2].

Архитектура HDFS, RPC, протоколы взаимодействия узлов в Hadoop
Взаимодействие узлов в кластере Hadoop

Взаимодействие с клиентом состоит из следующих шагов [4]:

  1. Клиент отправляет работу (job, файл в формате jar) на трекер работ (JobTracker), создавая при этом соединение через специально сконфигурированный для взаимодействия TCP-порт на сервере имен. Взаимодействие происходит по протоколу ClientProtocol.
  2. JobTracker ищет трекеры задач (TaskTracker), учитывая локализацию данных – в приоритете те трекеры, которые уже хранят данные из файловой системы. Далее каждый найденный TaskTracker получает задание на выполнение MapReduce-операций.
  3. После выполнения задачи TaskTracker отправляет на JobTracker отчет об этом. В случае сбоя подзадача автоматически перезапускается на другом узле.
Архитектура HDFS, JobTracker и TaskTracker
Взаимодействие с клиентом HDFS: JobTracker и TaskTracker

Все о HDFS, а также практика настройки, администрирования и использования инфраструктуры Hadoop для Big Data и Machine Learning в нашем учебном центре на компьютерных курсах для пользователей, инженеров, администраторов и аналитиков больших данных в Москве:

Источники

  1. https://ru.wikipedia.org/wiki/Hadoop
  2. https://www.codeinstinct.pro/2012/08/hdfs-design.html?m=1
  3. https://ru.wikipedia.org/wiki/Удалённый_вызов_процедур
  4. https://habr.com/ru/company/dataart/blog/234993/

 

2 Comments

Комментарии закрыты.

Поиск по сайту