Технология Hadoop
Технология Hadoop представляет собой программную инфраструктуру распределенных вычислений, работающих на кластерах. По сути это оболочка централизующая и оптимизирующая работу всех узлов системы. Hadoop можно сравнить с Windows. Но если Windows предназначена для работы одного компьютера, распределяя задачи между ядрами, то Hadoop работает с тысячами узлов.
Что такое кластер
Это группа, связанных компьютеров, которые работают совместно для выполнения общих приложений. Для пользователей кластер представляется единым ресурсом. Сегодня на них работают многие поисковые и контекстные гиганты такие, как Yahoo, Google, Фейсбук и другие высоконагруженные ресурсы.
Идея объединить несколько машин в единую сеть возникла еще в начале 1970-х гг. Первый кластер был создан в 1977 г. компанией Datapoint, однако развитие проекта началось только после 1984 г. Чтобы объединить несколько компьютеров в одну виртуальную машину для совместного вычисления и использования файлов требовалась операционная система. Первой такой системой стал Hydra, но множественные недостатки сделали проект нерентабельным. Только в 1984 г. появилась операционная система VAXcluster, способная распределять задачи и файлы через сеть. В настоящее время для оптимизации работы кластеров используется инфраструктура Hadoop, обросшая целой экосистемой программного обеспечения.
Hadoop
Это проект Apache, разработанный на языке Java и представляющий собой набор библиотек, разных утилит и фреймворк. Говоря проще, чтобы представить структуру Hadoop для чайников, ее можно сравнить с системой распределения труда на производстве. Например, утилита – это оборудование, библиотека – инструменты и заготовки, а фреймворк – распределение труда и планирование заданий, объединяющие разные задачи в единый производственный процесс.
Определение терминов
- Библиотека – динамический и статический модуля, содержащие подпрограммы, а также объекты, используемые для программного обеспечения.
- Утилита – вспомогательная программа, входящая в состав основного программного обеспечения. Утилита предназначена для доступа к параметрам и настройкам недоступным без ее применения или же автоматизации этого процесса.
- Фреймворк – каркас для программной платформы, состоящий из постоянной части с гнездами, несущими сменные модули и точки расширения. Основная задача каркаса – объединение различных модулей программного проекта в единую слаженную систему.
Составляющие модули Hadoop
Инфраструктура проекта включает 4 основные модуля, которые позволяют обеспечивать бесперебойную и отказоустойчивую работу кластеров, состоящих из сотен тысяч узлов.
Hadoop Common
Это связующее ПО, включающее библиотеки и утилиты, предназначенные для управления распределенной обработкой данных и использующиеся др. модулями.
HDFS
Hadoop Distributed File System – это система для хранения файлов, которые распределены поблочно между кластерными узлами. К тому же каждый файл разбивается на блоки. Они могут храниться на нескольких разных узлах кластера (дублироваться). Размер блока и количество узлов размещения определяются в настройках, а метаданные файловой системы о распределении блоков сохраняются в центральном узле имен. Благодаря такой репликации достигается отказоустойчивость при отказах отдельных блоков.
В последней версии применена параллельная обработка, которая исключает разделения ресурсов. В то же время инфраструктура Hadoop заменяется SQL-механизмом, развертываемым в системе HDFS.
YARN
Это система используется для планирования задач, а также управления кластером. Ранее эта функция возлагалась на модуль MapReduce, но в версии 2.0 работает логически самостоятельный планировщик ресурсов, запускаемый самой системой в фоновом режиме без взаимодействия с пользователем. YARN поддерживает параллельное выполнение нескольких заданий с изоляцией процессов по принципу мультиарендности.
YARN можно рассматривать как кластерную ОС, потому что модуль выступает в качестве интерфейса между аппаратным ресурсом и приложениями, которые используют его мощности для выполнения разных вычислений.
Hadoop MapReduce
Модуль является платформой для программирования распределенных вычислений. Более ранняя версия содержала планировщик задач JobTracker. В современной версии планировщик задач перенесен в YARN, а программные интерфейсы сохранены. Для совместимости с программами из предыдущих версии, необходим их рефакторинг.