Hadoop – слон, на котором стоит Big Data

Big Data
HadoopНа чем стоит мир? Мнения разных народов и легенд на этот счет разнятся. Разные версии упоминают китов, черепах, слонов, и другую сверхкрупную живность.

Мир Big Data стоит на слоне, правда игрушечном. Его зовут Hadoop, и в ближайшие несколько лет эта технология будет одной из важнейших.
Если вы еще не используете Hadoop, то вполне вероятно что в ближайшее время вам придется это сделать, чтобы сократить разрыв с конкурентами.

Начавшись как ..., Hadoop быстро стал одним из ведущих решений для обработки больших объемов данных. Он был особенно привлекателен потому что разрабатывался на началах open source, что автоматически снимало вопрос о лицензировании, весьма болезненный ввиду активности вконец обнаглевших патентных троллей.

Объясняя на пальцах, Hadoop предоставляет средства для эффективного и относительно экономичного хранения и управления большими массивами данных. Большие массивы данных хранятся распределенными по множеству серверов, а чтобы задания выполнялись эффективно – скажем, поиск или запись данных, они выполняются одновременно на всех серверах. Точнее, одно задание выполняется одновременно на всех серверах – это один из приемов, которые делают Hadoop таким эффективным. Другой залог успеха – это надежность. Даже если один или несколько узлов кластера выйдет из строя, это не приведет к отказу всей системы. И третий, хм, «слон», на котором стоит Hadoop – это эффективность использования сети. Зачастую, производительность аналитических вычислительных систем ограничивается пропускной способностью сети внутри или извне дата-центров. Hadoop избегает операций которые требуют перемещения большого объема данных по сети.

На официальном веб-сайте Apache это объясняется так:

Библиотека ПО Apache Hadoop – это фреймворк, основной задачей которого является распределенная обработка больших массивов данных распределенных по вычислительным кластерам с использованием простых программных моделей. Он легко масштабируется – от единичных серверов до сетей, состоящих из сотен вычислительных кластеров, каждый из которых использует свои вычислительные мощности и хранилища.

Проблема надежности таких систем решается со стороны ПО – сама система обнаруживает о обрабатывает отказы на уровне приложений, таким образом возможно построение сервиса с высокими показателями доступности, размещенного на нескольких компьютерных кластерах, показатели доступности каждого из которых по отдельности будут ниже, чем у всей системы в целом.

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

Hadoop Distributed Filesystem (HDFS)


HDFS – это тот клей, который объединяет все, зачастую разбросанные по всему миру вычислительные серверы, составляющие костяк вычислительной системы. HDFS – не единственный тип файловой системы, который может использоваться Hadoop, также доступна поддержка Amazon S3, Cloudstore, FTP и некоторых других, но HDFS лучше использует остальные преимущества Hadoop.

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

Главное преимущество HDFS, которое особенно хорошо проявляется в работе с Big Data – взаимозависимость между планировщиком и механизмами распределения заданий. Например, если планировщик получает запрос на обработку пакетов данных (x, y, z) которые физически располагаются на узле А, то эти пакеты будут обрабатываться непосредственно на узле А, что снижает потери времени на передачу данных. Если поставленная задача слишком ресурсоемка для единственного узла, она будет распределяться таким образом, чтобы в первую очередь задействовались физически близлежащие узлы. Это особенно важно при обработке больших объемов данных, где пропускная способность сети, связывающей отдельные вычислительные узлы может быть главным ограничивающим фактором. Таким образом HDFS обеспечивает беспроблемное и эффективное функционирование одной стороны Hadoop – хранения больших объемов данных. А когда с этими массивами становится необходимо что-то сделать, то к делу подключаются другие элементы фреймворка. Главный из них – движок MapReduce.

MapReduce


HDFS только хранит данные, но не обрабатывает их. Эта часть задачи может выполняться разными способами, но доступный по умолчанию компонент – это написанный на Java движок MapReduce. Он позволяет работать с HDFS как с базой данных, что само по себе нелегкая задача, так как HDFS совсем не похож на традиционные решения для баз данных. В традиционных реляционных базах данных необходима информация находится с использованием запросов на языке SQL. Нереляционные БД могут использовать и другие виды запросов, поэтому их еще называют NoSQL-базами данных.

Но Hadoop, по сути, не является БД – он хранит данные и они могут извлекаться из нее, но в процессе не используются запросы SQL или какие-либо иные. Вместо этого существует один планировщик заданий (Job Tracker), который располагается на главном узле и управляет выполнением многочисленных клиентских приложений (TaskTracker) на серверах, причем каждое работает практически независимо от других. Использование такой схемы взаимодействия, вместо традиционной, позволяет гораздо эффективнее использовать имеющиеся мощности, но и накладывает больше ограничений. Из-за этого для Hadoop разработано множество вспомогательных инструментов, которые, скажем, преобразуют SQL-запросы в задания MapReduce. По этой же причине во многих случаях Hadoop используется только как хранилище данных, а не инструмент анализа.

Распределенная система


Hadoop принципиально отличается от традиционных БД распределенностью операций. Как я уже говорил, каждый TaskTracker представляет собой отдельное приложение, которое выполняется на отдельной машине. Поэтому невозможен массовый выход системы из строя и недоступность информации из-за отказа одного из TaskTracker-ов – они могут подменять друг друга. Единственным незаменимым звеном остается только Job Tracker, но и в случае его сбоя результаты работы не будут потеряны так как в новых версиях системы Job Tracker автоматически делает точки сохранений, в которых отмечаются операции, которые выполняются в системе в конкретный момент. Когда Job Tracker запускается, он сначала ищет такие точки и продолжает работу с того места где она была закончена.

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

Hadoop 2.0, YARN


Hadoop уже успел завоевать популярность как платформа, хорошо подходящая для хранения больших объемов информации, но его дальнейшее развитие тормозится сложностью работы с алгоритмом MapReduce. Несколько крупных компаний (Google, Amazon, Rackspace) смогли приспособить его под свои нужды, но для большинства сложность программирования (нехватка специалистов) и однопоточность системы (MapReduce может одновременно выполнять только одну задачу – поиска, передачи данных или чего-то еще) ограничивают его применение в области высокопроизводительных вычислений.

Но в скором времени ожидаются изменения. Этим летом группа разработчиков, работающая в Apache Foundation собирается представить «на суд публики» Hadoop 2.0, основное назначение которого – сделать неструктурированные «хранилища данных», в которых уже задействован Hadoop, гораздо более пригодными для выполнения реальных вычислительных задач. Это проект YARN.

Комментарии (0)


Добавление комментариев доступно только зарегистрированным пользователям. Используйте свою существующую учетную запись для авторизации. Если у Вас еще нет учетной записи на сайте ее можно создать пройдя несложную процедуру регистрации. Кстати, для входа на сайт, наравне с учетной записью на cloudzone.ru, можно использовать аккаунт из следующих популярных сервисов: Яндекс, Facebook, Google и LinkedIn