Обработка данных в Hadoop: объяснение компонентов Hadoop [2022]

Опубликовано: 2021-01-03

С экспоненциальным ростом всемирной паутины на протяжении многих лет генерируемые данные также росли в геометрической прогрессии. Это привело к созданию огромного количества данных, и было трудно обрабатывать и хранить этот огромный объем данных с помощью традиционных систем реляционных баз данных.

Кроме того, созданные данные были не только в структурированной форме, но и в неструктурированном формате, таком как видео, изображения и т. д. Такие данные не могут быть обработаны реляционными базами данных. Чтобы противостоять этим проблемам, появился Hadoop.

Прежде чем мы углубимся в обработку данных Hadoop, давайте рассмотрим Hadoop и его компоненты. Apache Hadoop — это платформа, которая позволяет быстро и эффективно хранить и обрабатывать огромные объемы данных. Его можно использовать для хранения огромного количества структурированных и неструктурированных данных. Узнайте больше об экосистеме и компонентах Hadoop.

Основными строительными блоками Hadoop являются следующие:

Оглавление

Строительные блоки Hadoop

1. HDFS (уровень хранения)

Как следует из названия, распределенная файловая система Hadoop является уровнем хранения Hadoop и отвечает за хранение данных в распределенной среде (главная и подчиненная конфигурация). Он разбивает данные на несколько блоков данных и сохраняет их в разных узлах данных. Эти блоки данных также реплицируются между различными узлами данных, чтобы предотвратить потерю данных при выходе из строя одного из узлов.

У него есть два основных процесса для обработки данных: –

а. ИмяУзел

Он работает на главной машине. Он сохраняет расположение всех файлов, хранящихся в файловой системе, и отслеживает, где находятся данные в кластере, т. е. хранит метаданные файлов. Когда клиентские приложения хотят выполнить определенные операции с данными, они взаимодействуют с NameNode. Когда NameNode получает запрос, он отвечает, возвращая список серверов Data Node, на которых находятся требуемые данные.

б. DataNode

Этот процесс выполняется на каждой ведомой машине. Одной из его функций является хранение каждого блока данных HDFS в отдельном файле в локальной файловой системе. Другими словами, он содержит фактические данные в виде блоков. Он периодически отправляет сигналы пульса и ожидает запроса от NameNode для доступа к данным.

2. MapReduce (обрабатывающий слой)

Это метод программирования, основанный на Java, который используется поверх платформы Hadoop для более быстрой обработки огромных объемов данных. Он обрабатывает эти огромные данные в распределенной среде, используя множество узлов данных, что обеспечивает параллельную обработку и более быстрое выполнение операций отказоустойчивым способом.

Задание MapReduce разбивает набор данных на несколько фрагментов данных, которые затем преобразуются в пары ключ-значение для обработки преобразователями. Необработанный формат данных может не подходить для обработки. Таким образом, входные данные, совместимые с фазой карты, генерируются с помощью функции InputSplit и RecordReader.

InputSplit — это логическое представление данных, которые должны обрабатываться отдельным картографом. RecordReader преобразует эти разбиения в записи, которые принимают форму пар ключ-значение. Он в основном преобразует байтовое представление ввода в представление, ориентированное на запись.

Эти записи затем передаются картографам для дальнейшей обработки данных. Задания MapReduce в основном состоят из трех этапов, а именно этапа Map, этапа Shuffle и этапа Reduce.

а. Фаза карты

Это первый этап обработки данных. Основная задача на этапе карты — обработать каждый ввод из RecordReader и преобразовать его в промежуточные кортежи (пары ключ-значение). Этот промежуточный вывод сохраняется на локальном диске картографами.

Значения этих пар ключ-значение могут отличаться от значений, полученных в качестве входных данных от RecordReader. Фаза карты также может содержать объединители, которые также называются локальными редюсерами. Они выполняют агрегацию данных, но только в рамках одного преобразователя.

Поскольку вычисления выполняются на разных узлах данных, важно, чтобы все значения, связанные с одним и тем же ключом, были объединены в один редьюсер. Эту задачу выполняет разделитель. Он выполняет хеш-функцию над этими парами ключ-значение, чтобы объединить их вместе.

Это также гарантирует, что все задачи будут равномерно распределены по редукторам. Разделители обычно появляются, когда мы работаем с более чем одним редьюсером.

б. Фаза перемешивания и сортировки

На этом этапе промежуточный вывод, полученный от картографов, передается редукторам. Этот процесс называется перетасовкой. Вывод из мапперов также сортируется перед передачей в редукторы. Сортировка выполняется на основе ключей в парах ключ-значение. Это помогает редукторам выполнять вычисления с данными еще до того, как все данные будут получены, и в конечном итоге помогает сократить время, необходимое для вычислений.

Поскольку ключи отсортированы, каждый раз, когда редуктор получает другой ключ в качестве входных данных, он начинает выполнять задачи редукции для ранее полученных данных.

в. Уменьшить фазу

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

Мы можем фильтровать данные или объединять их для получения агрегированного вывода. После выполнения функции сокращения она может создать ноль или более пар ключ-значение. Этот результат записывается обратно в распределенную файловую систему Hadoop.

3. Пряжа (уровень управления)

Еще один навигатор ресурсов — это компонент управления ресурсами Hadoop. На каждом узле выполняются фоновые процессы (диспетчер узлов на подчиненных машинах и диспетчер ресурсов на главном узле), которые взаимодействуют друг с другом для распределения ресурсов. Диспетчер ресурсов является центральным элементом уровня YARN, который управляет ресурсами всех приложений и передает запросы диспетчеру узлов.

Диспетчер узла отслеживает использование ресурсов, таких как память, ЦП и диск машины, и передает то же самое диспетчеру ресурсов. Он устанавливается на каждом узле данных и отвечает за выполнение задач на узлах данных.

Рекомендуем прочитать: 10 лучших инструментов Hadoop для инженеров по работе с большими данными

Заключение

Весь рабочий процесс обработки данных в Hadoop можно резюмировать следующим образом:

  • ВводСплит ; логически разбивает данные, находящиеся в HDFS, на несколько блоков данных. Решение о том, как разделить данные, принимается форматом ввода .
  • Данные преобразуются в пары ключ-значение с помощью RecordReader. RecordReader преобразует данные, ориентированные на байты, в данные, ориентированные на записи. Эти данные служат входными данными для картографа.
  • Преобразователь, который представляет собой не что иное, как определяемую пользователем функцию, обрабатывает эти пары ключ-значение и генерирует промежуточные пары ключ-значение для дальнейшей обработки.
  • Эти пары локально сокращаются (в рамках одного преобразователя) объединителями, чтобы уменьшить объем данных, которые должны быть переданы от преобразователя к преобразователю.
  • Partitioner гарантирует, что все значения с одним и тем же ключом будут объединены в один и тот же редуктор, а задачи будут равномерно распределены между редьюсерами.
  • Затем эти промежуточные пары ключ-значение перетасовываются в редукторы и сортируются на основе ключей. Этот результат подается на редукторы в качестве входных данных.
  • Функция сокращения объединяет значения для каждого ключа, и результат сохраняется обратно в HDFS с помощью RecordWriter. Перед записью обратно в HDFS формат, в котором данные должны быть записаны, определяется форматом вывода .

Если вам интересно узнать больше о больших данных, ознакомьтесь с нашей программой PG Diploma в области разработки программного обеспечения со специализацией в области больших данных, которая предназначена для работающих профессионалов и включает более 7 тематических исследований и проектов, охватывает 14 языков и инструментов программирования, практические занятия. семинары, более 400 часов интенсивного обучения и помощь в трудоустройстве в ведущих фирмах.

Изучайте онлайн-курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Освойте технологии будущего — большие данные

400+ ЧАСОВ ОБУЧЕНИЯ. 14 ЯЗЫКОВ И ИНСТРУМЕНТОВ. СТАТУС ВЫПУСКНИКОВ IIIT-B.
Расширенная программа сертификации в области больших данных от IIIT Bangalore