Hadoop

Что такое Hadoop?

hadoop

Hadoop – это проект с открытым исходным кодом, находящийся под управлением Apache Software Foundation (http://hadoop.apache.org/). Hadoop используется для надежных, масштабируемых и распределенных вычислений, но может также применяться и как хранилище файлов общего назначения, способное вместить петабайты данных. Многие компании используют Hadoop в исследовательских и производственных целях.

 

Hadoop состоит из двух ключевых компонентов:

— Распределенная файловая система Hadoop (англ. HDFS), которая отвечает за хранение данных на кластере Hadoop;

— Система MapReduce, предназначенная для вычислений и обработки больших объемов данных на кластере.

 

На основе этих ключевых компонентов создано несколько подпроектов, таких как Pig, Hive, HBase и т.д.

MapReduce

MapReduce – это модель программирования и каркас для написания приложений, предназначенных для высокоскоростной обработки больших объемов данных на больших параллельных кластерах вычислительных узлов:

— обеспечивает автоматическое распараллеливание и распределение задач;

— имеет встроенные механизмы сохранения устойчивости и работоспособности при сбое отдельных эелементов;

— обеспечивает чистый уровень абстракции для программистов.

HDFS

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

— Данные распределяются по нескольким машинам во время загрузки.

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

— Файлы в системе HDFS пишутся однократно и внесение никаких произвольных записей в файлы не допускается.

— Приложения могут считывать и писать файлы Распределенной файловой системы напрямую через программный интерфейс Java.

 

Hadoop и корпоративные системы

Hadoop-Ecosystem-Infographic-21

Системы управления реляционными базами данных (СУРБД, или англ. RDBMS) используются в системах больших компаний по стандартной схеме:

— Интерактивная система СУРБД обрабатывает запросы, поступающие с веб-сайта или других пользовательских приложений.

— Затем данные извлекаются из реляционной базы и загружаются в хранилище данных для дальнейшей обработки и архивации.

— Данные обычно денормализуются в OLAP-куб.

 

К сожалению, современные системы СУРБД не могут вместить все то огромное количество данных, которое создается в больших компаниях, и тогда возникает необходимость идти на компромисс: данные либо только частично копируются в СУРБД, либо удаляются через определенное время. Необходимость таких компромиссных решений отпадает, если в качестве промежуточного слоя между интерактивной базой данных и хранилищем данных используется Hadoop:

— Производительность обработки данных возрастает пропорционально увеличению объема хранилища данных, в то время как в высокопроизводительных серверах рост количества данных и изменение производительности непропорциональны.

— При использовании Hadoop, чтобы повысить производительность обработки, достаточно просто добавить новые узлы в хранилище данных.

— Hadoop может хранить и обрабатывать многие петабайты данных.

 

Однако Hadoop имеет ряд серьезных ограничений, и потому Hadoop не может использоваться в качестве операционной базы данных:

— Для выполнения самой быстрой задачи в Hadoop все же требуется несколько секунд.

— Не допускается внесение никаких изменений в данные, которые хранятся в системе HDFS.

— Hadoop не поддерживает транзакции.

 

Hadoop и СУРБД

Системы управления реляционными базами данных (СУРБД) имеют много достоинств:

— они способны оперировать сложными транзакциями;

— в них могут обрабатываться сотни тысяч запросов в секунду;

— результаты выдаются в реальном времени;

— применяется простой, но эффективный язык запросов.

 

Однако у СУРБД есть и слабые стороны:

— Схема данных определяется до того, как данные импортируются;

— Предельная вместимость СУРБД достигает сотен терабайтов;

— Предельное количество данных в одном запросе составляет десятки терабайтов.

 

Hadoop и файловые хранилища

Hadoop

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

 

Hive и Pig

http://hive.apache.org/

http://pig.apache.org/

 

MapReduce является очень мощным инструментом обработки данных, однако он может оказаться довольно сложным для создания и поддержания, в то время как во многих компаниях работают бизнес-аналитики, которые хорошо умеют писать запросы на языке SQL, но не умеют писать код на Java. Также, во многих организациях есть программисты, умеющие писать код на скриптовых языках. Hive и Pig – это два проекта, которые разрабатывались независимо друг от друга и которые предназначены для того, чтобы помочь таким аналитикам и программистам эффективно использовать MapReduce для анализа больших массивов данных.

 

Hive – это надстройка над Hadoop для того, чтобы облегчить выполнение таких задач, как суммирование данных, непрограммируемые запросы и анализ больших наборов данных:

 

— Hive может быть использован теми, кто знает язык SQL.

— Hive создает задания MapReduce, которые исполняются на кластере Hadoop.

— Определения таблиц в Hive надстраиваются над данными в HDFS.

 

Pig – это платформа, предназначенная для анализа больших наборов данных и состоящая из языка высокого уровня для написания программ анализа данных и инфраструктуры для запуска этих программ. Язык характеризуется  относительно простым синтаксисом. Написанные  сценарии скрыто преобразуются в задачи MapReduce, которые исполняются на кластере Hadoop.

 

HBase

http://hbase.apache.org/

HBase — это колоночная база данных, расположенная поверх HDFS, которая способна вместить огромные массивы данных (от гигабайтов до петабайтов данных). HBase используется тогда, когда нужен произвольный доступ к данным, хранящимся в HDFS, в реальном времени и с правом записи и чтения.

Модель доступа к данным в HBase имеет следующие ограничения:

— поиск ряда по одному ключу;

— не поддерживаются транзакции;

— доступны только операции по одной строке.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *