Платформа Hadoop предоставляет платформу с открытым исходным кодом для обработки больших объемов данных на кластерах компьютеров. Благодаря своим мощным функциям он стал чрезвычайно популярным в области больших данных. Hadoop позволяет нам хранить любые данные и обрабатывать несколько одновременных задач. Мы собираемся углубиться в платформу Hadoop и обсудить экосистему Hadoop, принципы работы Hadoop, ее плюсы и минусы и многое другое.
Что такое Apache Hadoop?
Hadoop — это программная среда с открытым исходным кодом, разработанная Apache Software Foundation. Он использует модели программирования для обработки больших наборов данных. Hadoop написан на Java и построен на кластерах Hadoop. Эти кластеры представляют собой наборы компьютеров или узлов, которые работают вместе для выполнения вычислений с данными. У Apache есть и другие программные проекты, которые интегрируются с Hadoop, в том числе проекты для хранения данных, управления заданиями Hadoop, анализа данных и многого другого. Мы можем использовать Hadoop с облачными сервисами, такими как Amazon AWS, Microsoft Azure и Cloudera, для управления и организации наших усилий по работе с большими данными.
История Hadoop
Apache Hadoop появился в 2002 году, когда Дуг Каттинг и Майк Кафарелла работали над Apache Nutch. Они узнали, что Nutch не полностью способен обрабатывать большие объемы данных, поэтому начали поиск решения. Они узнали об архитектуре файловой системы Google (GFS) и технологии MapReduce, которая обрабатывает большие наборы данных. Также они начали внедрять методы GFS и MapReduce в свой проект Nutch с открытым исходным кодом, но Nutch все еще не полностью отвечал их потребностям.
Когда Каттинг присоединился к Yahoo в 2006 году, он основал новый проект под названием Hadoop. Он отделил распределенные вычислительные части от Apache Nutch и работал с Yahoo над разработкой Hadoop, способного обрабатывать тысячи узлов. В 2007 году Yahoo протестировала Hadoop на кластере из 1000 узлов и начала использовать его для внутренних целей. В начале 2008 года Hadoop был выпущен как проект с открытым исходным кодом в Apache Software Foundation. Позже в том же году они успешно протестировали Hadoop на кластере из 4000 узлов.
В 2009 году Hadoop был способен обрабатывать миллиарды поисковых запросов и индексировать миллионы веб-страниц. В это время Каттинг присоединился к команде Cloudera, чтобы помочь распространить Hadoop в облачной индустрии. Наконец, в 2011 году была выпущена версия 1.0 Hadoop. Последняя версия (3.3.1) вышла в 2021 году.
Экосистема Hadoop
Экосистема Hadoop — это набор сервисов, которые мы можем использовать для работы с инициативами в области больших данных. Четыре основных элемента экосистемы включают:
- Уменьшение карты
- Распределенная файловая система Hadoop (HDFS)
- Еще один посредник по согласованию ресурсов (YARN)
- Hadoop Common
Давайте подробнее рассмотрим каждую из этих служб.
Уменьшение карты
Hadoop MapReduce — это модель программирования, используемая для распределенных вычислений. С помощью этой модели мы можем обрабатывать большие объемы данных параллельно на больших кластерах стандартного оборудования. С MapReduce мы можем использовать Map и Reduce. А также с помощью Map мы можем преобразовать набор данных в кортежи (пары ключ / значение). Reduce принимает выходные данные Map в качестве входных данных и объединяет кортежи в меньшие наборы кортежей. MapReduce упрощает масштабирование обработки данных для работы десятков тысяч машин в кластере.
Во время выполнения заданий MapReduce Hadoop отправляет задачи на соответствующие серверы в кластере. Когда задачи завершены, кластеры собирают и преобразуют данные в результат и отправляют результат обратно на сервер Hadoop.
Распределенная файловая система Hadoop (HDFS)
Как следует из названия, HDFS — это распределенная файловая система. Он обрабатывает большие наборы данных и работает на стандартном оборудовании. HDFS помогает масштабировать отдельные кластеры Hadoop на несколько узлов и помогает выполнять параллельную обработку. Встроенные серверы NameNode и DataNode помогают нам проверять состояние наших кластеров. HDFS отличается высокой отказоустойчивостью, портативностью и экономичностью.
Еще один посредник по согласованию ресурсов (YARN)
Hadoop YARN — это инструмент управления ресурсами кластера и планирования заданий. YARN также работает с данными, которые мы храним в HDFS, что позволяет нам выполнять такие задачи, как:
- Обработка графиков
- Интерактивная обработка
- Потоковая обработка
- Пакетная обработка
Он динамически распределяет ресурсы и планирует обработку приложений. YARN поддерживает MapReduce, а также множество других моделей обработки. Он эффективно использует ресурсы и имеет обратную совместимость, что означает, что он может работать с предыдущими версиями Hadoop без каких-либо проблем.
Hadoop Common
Hadoop Common, также известный как Hadoop Core, предоставляет библиотеки Java, которые мы можем использовать во всех наших модулях Hadoop.
Другие компоненты включают:
- Cassandra: Cassandra — это система управления базами данных NoSQL с широкими колонками.
- Flume: Flume объединяет, собирает и перемещает большие объемы данных журнала.
- Pig: Pig — это язык программирования высокого уровня, используемый для анализа больших наборов данных.
- HBase — HBase — это система управления нереляционными базами данных, работающая поверх HDFS.
- Hive: Apache Hive — это отказоустойчивое и похожее на SQL программное обеспечение хранилища данных, которое обрабатывает чтение, запись и управление данными.
- Lucene: Lucene — это библиотека программного обеспечения для поисковых систем с открытым исходным кодом, написанная на Java. Он предоставляет надежные функции поиска и индексирования.
- Mahout: Apache Mahout — это проект с открытым исходным кодом, используемый для создания масштабируемых алгоритмов машинного обучения.
- Oozie: Oozie — это система планирования рабочей нагрузки, используемая для обработки заданий Hadoop.
- Spark MLib: MLlib — это масштабируемая библиотека машинного обучения с API Java, Scala, R и Python.
- Solr: Solr — это платформа корпоративного поиска, построенная на Lucene.
- Sqoop: Sqoop — это приложение CLI, используемое для передачи данных между реляционными базами данныхи Hadoop.
- Submarine: Submarine — это облачная платформа для машинного обучения и глубокого обучения. Он поддерживает обработку данных, разработку алгоритмов, фреймворки машинного обучения и усилия по контейнеризации.
- Zookeeper: Zookeeper — это централизованный сервер для надежной координации распределенных облачных приложений.
Как работает Hadoop?
В предыдущем разделе мы обсудили большое количество сервисов, которые интегрируются с Hadoop. Теперь мы знаем, что экосистема Hadoop большая и расширяемая. Это позволяет нам выполнять множество задач, таких как сбор, хранение, анализ, обработка и управление большими данными. Hadoop предоставляет нам платформу, на которой мы можем создавать другие сервисы и приложения.
Приложения могут использовать операции API для подключения к NameNode и размещения данных в кластерах Hadoop. NameNodeреплицирует эти данные по частям между узлами данных. Мы можем использовать MapReduce для выполнения заданий, запроса данных и сокращения количества задач в HDFS. Задачи карты выполняются на каждом узле для файлов, которые мы предоставляем, а задачи сокращения или редукторы объединяют и организуют наш вывод.
Плюсы, минусы и варианты использования Hadoop
Hadoop — популярная платформа, у которой есть свои плюсы и минусы. Давайте посмотрим на них, а затем обсудим несколько вариантов использования.
Плюсы
- Рентабельность: традиционно хранение больших объемов данных стоит больших денег. Hadoop решает эту проблему, а также сохраняет все необработанные данные, чтобы к ним можно было получить доступ в любое время.
- Высокая доступность: функция высокой доступности HDFS позволяет нам запускать два или более избыточных NameNodes в одном кластере, что обеспечивает быстрое переключение в случае сбоя машины или сбоя.
- Масштабируемость: мощность хранилища и обработки можно легко увеличить, добавив больше узлов.
- Систематичность: HDFS тщательно обрабатывает все компоненты и программы.
- Гибкость: Hadoop может обрабатывать структурированные и неструктурированные данные.
- Активное сообщество: у Hadoop большая база пользователей, поэтому можно легко найти полезную документацию или помощь по любой проблеме, с которой вы столкнетесь.
- MapReduce: MapReduce — мощный инструмент, который можно использовать через Java или Apache Pig.
- Богатая экосистема: у Hadoop так много дополнительных инструментов и сервисов, которые легко интегрируются в платформу. Эти службы позволяют нам выполнять множество различных задач, связанных с нашими данными.
- Параллельная обработка: Hadoop эффективно выполняет параллельную обработку и может обрабатывать даже петабайты данных.
- Форматирование данных: переключение между различными типами форматов данных иногда может привести к потере данных, но форматы не нужно менять в Hadoop.
Минусы
- Маленькие файлы: HDFS не поддерживает небольшие файлы, потому что она предназначена для работы с большими объемами.
- Нет обработки в реальном времени: Hadoop не подходит для обработки данных в реальном времени. Apache Spark или Apache Flink — отличные ресурсы, которые помогут ускорить процесс.
- Безопасность. В Hadoops отсутствует шифрование на уровне хранилища и сети, что означает, что ваши данные могут быть в опасности. Spark предоставляет бонусы безопасности, помогающие преодолеть ограничения Hadoop.
- Время отклика. Среда программирования MapReduce временами работает медленно.
- Кривая обучения: существует множество различных модулей и сервисов, доступных для использования с Hadoop, и их изучение может занять много времени.
- Сложный интерфейс: интерфейс не очень интуитивно понятен, поэтому знакомство с платформой может занять некоторое время.
Случаи применения
Решения на основе данных
Мы можем интегрировать структурированные и неструктурированные данные, которые не используются в хранилище данных или реляционной базе данных. Это позволяет нам принимать более точные решения, основанные на обширных данных.
Аналитика и доступ к большим данным
Hadoop отлично подходит для специалистов по обработке данных и инженеров машинного обучения, поскольку он позволяет нам выполнять расширенную аналитику для поиска закономерностей и разработки точных и эффективных моделей прогнозирования.
Озера данных
Решения для управления Hadoop могут помочь нам с интеграцией данных, безопасностью и качеством для озер данных.
Финансовые услуги
Hadoop может помочь нам создавать и запускать приложения для оценки рисков, разработки инвестиционных моделей и торговых алгоритмов.
Здравоохранение
Hadoop помогает нам отслеживать крупномасштабные индексы здоровья и вести записи пациентов.
Прогноз продаж
Hadoop используется в розничных компаниях для прогнозирования продаж и увеличения прибыли путем изучения исторических данных.
Hadoop против Spark
Apache Hadoop и Apache Spark часто сравнивают друг с другом, потому что это обе платформы с открытым исходным кодом для обработки больших данных. Spark — это новый проект, который изначально был разработан в 2012 году. Он ориентирован на параллельную обработку данных в кластере и работает в памяти. Это означает, что он намного быстрее, чем MapReduce.
Hadoop — лучшая платформа, если вы работаете с пакетной обработкой больших объемов данных. Spark — лучшая платформа для потоковой передачи данных, создания графических вычислений или машинного обучения. Spark также поддерживает обработку данных в реальном времени и пакетную обработку. Со Spark можно использовать множество различных библиотек, в том числе для машинного обучения, задач SQL, потоковой передачи данных и построения графиков.