Главная страница Зачем Hadoop?

Большие данные

TaskData предлагает ряд услуг по работе с большими данными.

Подробнее

Проект Hadoop

Узнайте больше о проекте Hadoop на официальном сайте:

Что такое Hadoop?

 

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

 

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

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

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

 

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

 

HDFS

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

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

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

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

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

 

MapReduce

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

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

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

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

 

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

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

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

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

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

 

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

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

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

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

 

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

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

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

- 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 имеет следующие ограничения:

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

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

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