Инструментарий специалиста по большим данным: Shark

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

Что такое Shark?

Главный козырь Apache Hadoop – пакетная обработка данных, однако технология MapReduce не слишком приспособлена для интерактивных запросов SQL. Именно поэтому чаще всего запросы к данным в реальном времени осуществляются посредством пользовательских программ, обеспечивающих соединение кластера Hadoop с БД, работающей в рамках массово-параллельной архитектуры (MPP).

На практике это означает существование двух отдельных кластеров – и, соответственно, необходимость разработки программ-коннекторов между ними. Такая ситуация послужила толчком к появлению систем, обеспечивающих возможность быстрого доступа к БД напрямую из кластера Hadoop путем написания SQL-запросов. Естественно, коннекторы между Hadoop и быстрыми кластерами, работающими на MPP, никуда не денутся, но интерес к продуктам, которые позволяют перенести возможность создания интерактивных SQL-запросов в системы, существующие в рамках экосистемы Hadoop, стремительно растет.

Shark – один из важнейших инструментов для работы с SQL-запросами этого поколения. Как часть распределенной системы Spark, обеспечивающей анализ данных в оперативной памяти, Shark способен работать в одном кластере с Hadoop – более того, он полностью совместим с инструментом доступа к КХД Hive и поддерживает язык HiveQL, форматы данных Hive, а также пользовательские функции.

Чем Shark отличается от Hive?

Чем же эта новая «фишка» отличается от «коренного обитателя» экосистемы Apache Hadoop Hive? Создатели Shark уверяют, что, согласно экспериментальным данным, их продукт способен выполнять широкий круг запросов гораздо быстрее. Что значит «гораздо»? Судите сами: Shark на диске обеспечивает скорость запросов, примерно в 5-10 раз превышающую аналогичный показатель у Hive, а при работе в оперативной памяти Shark работает уже примерно в 100 раз быстрее. Ощутимая разница, не правда ли?

Скорость работы – далеко не единственная положительная особенность Shark. Разработчикам удалось добиться высокого уровня масштабируемости и одновременно впечатляющей отказоустойчивости, при этом не обделив свое детище такими мощными функциями как совместное секционирование данных (copartition) и внедрение машинного обучения в поток работ аналитика.

Преимущества Shark

Предлагаем кратко рассмотреть эти и другие преимущества Shark.

  • Контроль над секционированием данных = Быстрое, распределенное использование оператора JOIN. Shark позволяет пользователям секционировать данные, используя определенный ключ. В частности, если требуется часто соединять таблицы, их можно секционировать с использованием общего ключа (join-ключа). Этот прием носит название совместного секционирования и используется для того, чтобы существенно повысить скорость работы оператора JOIN при работе с большими таблицами.
  • Отказоустойчивость. Shark быстро восстанавливается после отказа узла, продолжая работу с запросами после реконструкции утерянных секций данных. Подобные проблемы не слишком влияют на производительность Shark – в любом случае, это гораздо быстрее, чем выполнять запрос заново.
  • «Оптимизация» SQL. Shark включает в себя простой оптимизатор (PDE), который использует статистические данные (например, приблизительные гистограммы) для динамического изменения запроса при необходимости.
  • Поддержка машинного обучения. Фундаментальный объект данных в Spark – так называемый распределенный эластичный набор данных (RDD), который может храниться в кэше оперативной памяти узлов кластера. В рамках Spark можно не только создавать такие объекты, но и применять к ним функции машинного обучения на языках Scala и Java, а в скором времени и Python. Самое приятное во всей этой истории – скорость даже таких сложных вычислений в рамках Spark в 100 раз выше, чем у собственных инструментов Hadoop.

С ростом объемов данных и, как следствие, популярности распределенных вычислений и наиболее приспособленного для подобных задач Apache Hadoop, встал вопрос увеличения скорости и уровня отказоустойчивости SQL-запросов, желательно при помощи инструмента, способного работать в рамках единственного кластера. Ответ явился в виде Shark – распределенного инструмента для быстрой работы с SQL, обладающего целым «букетом» полезных функций, таких как поддержка машинного обучения.

В следующих материалах мы расскажем о других программных продуктах для работы с большими данными – на очереди обзоры по Spark, Kafka, Caffe и другим полезным «помощникам» специалиста по большим данным.

Автор: Елизавета Филиппова

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

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =