Facebook открыл код распределённого SQL-движка для петабайтных хранилищ
7 ноября 2013 года
Компания Facebook перевела в разряд открытых систему Presto, созданную в качестве высокопроизводительной альтернативы технологиям MapReduce и Hive, ранее используемым для выполнения запросов в многопетабайтных хранилищах на базе платформы Hadoop. Presto находится в разработке с осени прошлого года и развивается для решения проблем с длительным временем отклика, свойственным существующим средствам обработки данных для имеющегося в Facebook хранилища на базе Hadoop, размер которого превысил 300 петабайт.
Presto позволяет формировать запросы с использованием языка SQL, обеспечивая при этом в десять раз более высокую производительность и отзывчивость, по сравнению с Hive/MapReduce. Движок не ограничивается работой поверх Hadoop и может использоваться в связке с обычными реляционными БД и проприетарными системами хранения. Для абстрагирования от нижележащего хранилизща в Presto применяется механизм подключаемых бэкендов. В отличие от Hive, Presto не транслирует запрос в серию последовательно выполняемых MapReduce-задач, каждая из которых читает данные с диска и записывает на диск промежуточный результат. Вместо этого, Presto предоставляет собственный механизм выполнения запросов, отличающийся улучшенной системой планирования, выполнением обработки данных в оперативной памяти и применением конвейерной обработки, при которой несколько стадий запроса выполняются за один раз.
Сформированный в Presto запрос может охватывать несколько источников данных, агрегируя полученные сведения в единый итоговый результат. В качестве основной области применения Presto называется выполнение аналитических запросов, для которых допустимо время отклика от долей секунды до нескольких минут. Тем самым Presto является первым открытым решением для задач быстрой аналитики, которые ранее были доступны только через дорогие проприетарные системы или через использование свободных систем, требующих излишнего аппаратного обеспечения.
Движком поддерживается большинство элементов, определённых в спецификации ANSI SQL, включая возможность объединения таблиц, использования математических функций, строковых преобразований, регулярных выражений, операций с данными в формате JSON, оконных функций для отсеивания набора строк из результирующего запроса. Для формирования запросов можно использовать специальную консольную оболочку, модули интеграции с интегрированными средами разработки и биндинги для различных языков программирования.
Код Presto написан на языке Java и распространяется под лицензией Apache 2. Для увеличения производительности части плана выполнения запроса динамически компилируются в Java-байткод, что позволяет JVM использовать дополнительные оптимизации и сгенерировать машинный код. Код Presto создан с учётом обхода типичных проблем Java-кода c распределением памяти и сборкой мусора.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.