Hadoop – это программная платформа с открытым исходным кодом Apache для хранения и крупномасштабной обработки больших наборов данных в распределенной среде кластеров компьютеров с использованием простых моделей программирования.
Hadoop предназначен для масштабирования от отдельных серверов до тысяч машин, каждая из которых обеспечивает локальные вычисления и хранилище.
Фреймворк Hadoop был создан Дагом Каттингом и Майком Кафареллой в 2005 году.
Первоначально этот фреймворк был разработан для поддержки распространения проекта Nutch Search Engine построения поисковых систем.
Даг, который в то время работал в Yahoo, а сейчас является главным архитектором в Cloudera, назвал этот проект в честь слона своего сына.
Его сын назвал своего игрушечного слона Hadoop, и Даг использовал это имя, чтобы так назвать свой проект.
Давайте посмотрим, что делает фреймворк Hadoop таким интересным, масштабируемым и удобным в использовании.
Hadoop начинался как простая среда пакетной обработки.
Идея, лежащая в основе Hadoop, заключается в том, что вместо перемещения данных в вычисления мы переносим вычисления в данные.
И в основе системы Hadoop лежит масштабируемость.
Все модули в Hadoop разработаны с фундаментальным предположением о том, что аппаратное обеспечение рано или поздно выходит из строя.
То есть предположением, что отдельная машина или стойка машин, или большой кластер или суперкомпьютер, все они в какой-то момент выйдут из строя, или некоторые их компоненты выйдут из строя.
И компоненты Apache Hadoop – MapReduce и HDFS изначально были созданы на основе Google MapReduce и файловой системы Google.
Еще одна очень интересная вещь, которую приносит Hadoop, – это новый подход к данным.
Новый подход заключается в том, что мы можем сохранить все данные, которые у нас есть, и мы можем взять эти данные и читать данные, создавая схему, во время чтения.
Вместо того, чтобы тратить время на создание схемы, пытаясь подогнать данные к схеме, которую мы создали заранее, мы сохраняем все данные в приблизительном формате, а затем проецируем их в схему на лету, пока мы эти данные читаем.
Фреймворк Apache Hadoop содержит четыре основных компонента.
Это Hadoop Common, распределенная файловая система Hadoop или HDFS, Hadoop MapReduce и Hadoop YARN.
Hadoop Common содержит библиотеки и утилиты, необходимые для других модулей Hadoop.
Распределенная файловая система Hadoop хранит данные на обычном компьютере, обеспечивая очень высокую совокупную пропускную способность по всему кластеру компьютеров.
Hadoop YARN – это платформа управления ресурсами, которая отвечает за управление вычислительными ресурсами в кластере и их использование в при планировании пользователей и приложений.
И Hadoop MapReduce – это модель программирования, которая масштабирует данные по множеству процессов.
И все модули фреймворка Hadoop разработаны с фундаментальным предположением, что аппаратное обеспечение выходит из строя.
Если вы посмотрите на HDFS, YARN, MapReduce и всю платформу в целом, она состоит из многочисленных приложений, и каждое из этих приложений создано с учетом этого предположения.
У нас есть различные приложения, такие как Apache PIG, Apache Hive, HBase и другие.
И для конечного пользователя, через Java-код MapReduce, он может получить доступ к любому из этих приложений.
И мы можем строить различного вида системы из этих приложений.
Проекты Apache PIG и Apache Hive предоставляют интерфейсы высокого уровня, обеспечивая доступ к данным через пользовательский интерфейс.
Сам фреймворк Hadoop в основном написан на языке программирования Java и проект также содержит несколько приложений на нативном языке C и утилиты командной строки.
Теперь, давайте немного поговорим о распределенной файловой системе Hadoop.
Что такое HDFS по своей сути?
Это распределенная, масштабируемая и переносимая файловая система, написанная на Java для поддержки фреймворка Hadoop.
Каждый Hadoop кластер обычно состоит из одного узла Namenode и кластера узлов Datanode, которые и формируют этот кластер.
И каждая система HDFS хранит большие файлы, как правило, в диапазоне от гигабайтов до терабайтов.
И надежность системы HDFS достигается путем репликации многочисленных хостов.
Также файловая система HTFS поддерживает так называемый вторичный узел NameNote, который регулярно подключается к первичному узлу NameNote и создает снимки его состояния, запоминая, что система сохраняет в локальных и удаленных каталогах.
В каждой системе, основанной на Hadoop, содержится какая-то версия движка MapReduce.
Типичный движок MapReduce содержит средство отслеживания работы, в которое клиентские приложения могут отправлять задания MapReduce.
И этот трекер работы передает задачи всем доступным трекерам задач, которые есть в кластере.
Таким образом, классический Hadoop MapReduce представляет собой один процесс JobTracker и произвольное количество процессов TaskTracker, или по-другому один мастер узел и множество узлов slave.
MapReduce выполняет работу над огромным набором данных, обрабатывая данные и сохраняя их в HDFS таким образом, что извлечение данных производится проще, чем в традиционном хранилище.
Модель MapReduce следует принципам функционального программирования, вследствие чего пользовательские вычисления выполняются как функции map и reduce, обрабатывающие данные в виде пар ключ-значение.
Hadoop предоставляет высокоуровневый программный интерфейс для реализации пользовательских функций map и reduce на различных языках.
Также Hadoop предоставляет инфраструктуру для выполнения заданий MapReduce в виде серий задач map и reduce.
Задачи map вызывают функции map для обработки наборов входных данных.
Затем задачи reduce вызывают функции reduce для обработки промежуточных данных, сгенерированных функциями map, формируя окончательные выходные данные.
Задачи map и reduce выполняются изолированно друг от друга, что обеспечивает параллельность и отказоустойчивость вычислений.
Hadoop версии 1 содержал компоненты HDFS и Map Reduce.
И Hadoop версии 1 разрабатывался только для выполнения заданий MapReduce.
А Hadoop версии 2 уже содержит компоненты HDFS и YARN/Map Reduce версии 2.
В классическом Map Reduce, когда мастер узел перестает работать, тогда все его узлы slave автоматически перестают работать.
И мы должны перезапустить весь кластер и заново начать выполнять работу.
Это единственный сценарий, когда выполнение работы может прерваться, и это создает единственную точку отказа.
Компонент YARN или Yet Another Resource Negotiator решает эту проблему благодаря своей архитектуре.
YARN основывается на концепции нескольких мастер узлов и нескольких подчиненных slave узлов, и если один мастер узел выйдет из строя, тогда другой мастер узел возобновит процесс и продолжит выполнение.
Классический Map Reduce отвечает как за управление ресурсами, так и за обработку данных.
В Hadoop версии 2, YARN разделяет функций управления ресурсами и планирования/мониторинга заданий на отдельные демоны.
YARN – это универсальная платформа для запуска любого распределенного приложения, и здесь Map Reduce – это распределенное приложение, которое работает поверх YARN.
Таким образом, YARN отвечает за управление ресурсами, то есть решает, какая работа будет выполняться и какой системой.
Тогда как Map Reduce является фреймворком программирования, который отвечает за то, как выполнить конкретную работу, используя два компонента mapper и reducer.
YARN отделяет компоненты управления ресурсами от компонентов обработки, и YARN не сводится только к MapReduce.
Диспетчер ресурсов resource manager YARN оптимизирует использование кластера и поддерживает другие рабочие процессы, кроме Map Reduce.
Поэтому здесь мы можем добавлять дополнительные программные модели, такие как обработка графов или итеративное моделирование, которые могут обрабатывать данные, используя те же кластеры и общие ресурсы.
Поверх HDFS и Yarn могут работать множество компонентов, и эта архитектура также развивалась с течением времени.
Давайте посмотрим на историю и посмотрим, как вся эта экосистема Hadoop развивалась и росла со временем.
Как вы можете заметить, у многих из этих приложений смешные имена.
Как мы можем понять весь этот зоопарк, и как мы можем понять, что делает каждое из этих приложений?
Проект Hadoop возник из концепции Google MapReduce и идеи о том, как можно обрабатывать очень большие объемы данных.
Здесь показан стек Google Big Data.
И он начинается с файловой системы Google GFS.
В Google подумали, что будет хорошей идеей использовать большое количество распределенного дешевого хранилища, и попытаться разместить там много данных.
И придумать какой-то фреймворк, который позволил бы обрабатывать все эти данные.
Таким образом, у Google появился свой оригинальный MapReduce, и они хранили и обрабатывали большие объемы данных.
Затем в Google сказали, что это действительно здорово, но нам бы очень хотелось иметь доступ к этим данным и обращаться к ним на языке, похожем на SQL.
Поэтому они создали шлюз MySQL Gateway, чтобы адаптировать данные в кластере MapReduce и иметь возможность запрашивать эти данных.
Затем они поняли, что им нужен специальный язык высокого уровня для доступа к MapReduce в кластере и отправки работы.
Так появился Sawzall.
Затем появился Evenflow и позволил связывать воедино сложные рабочие нагрузки и координировать сервисы и события.
Затем появился Дремель. Dremel – это хранилище и менеджер метаданных, который позволяет управлять данными и обрабатывать очень большой объем неструктурированных данных.
И затем, конечно, вам нужно что-то, чтобы координировать все это между собой.
Так появился Chubby в качестве системы координации, которая управляет всеми продуктами в этой экосистеме, обрабатывающей большие объемы данных.
Здесь показан стек Facebook Big Data.
И мы видим, что стек Facebook выглядит очень похожим.
Здесь есть Zookeeper, аналог Chubby, цель которого хранение и управление конфигурациями систем.
Здесь есть HBase, и таблицы в HBase служат входом и выходом для работы MapReduce.
И здесь Hive и Databee, которые обеспечивает SQL запросы.
И есть Scribe, который используется для агрегации лог данных, передаваемых в режиме реального
На этой странице вы можете прочитать онлайн книгу «Технология хранения и обработки больших данных Hadoop», автора Тимура Машнина. Данная книга имеет возрастное ограничение 12+, относится к жанрам: «Программирование», «Книги о компьютерах». Произведение затрагивает такие темы, как «анализ данных», «big data». Книга «Технология хранения и обработки больших данных Hadoop» была написана в 2021 и издана в 2021 году. Приятного чтения!
О проекте
О подписке