Вероятно, в попытке повысить требования к масштабируемости SQL, Facebook выпустила открытый движок SQL-запросов под названием Presto, который построен для работы с хранилищами данных, объем которых составляет десятки петабайт.
Как сообщается в посте инженера Facebook Мартина Траверсо, в настоящий момент более тысячи сотрудников ежедневно используют Presto для обработки более 30 тыс. интерактивных запросов. Компания
специально масштабировала это ПО для работы на кластере с 1000 узлов.
Facebook заинтересована, чтобы другие организации, имеющие дело с данными, использовали и, возможно, совершенствовали Presto. Поэтому компания опубликовала его исходный код и поощряет участие других сторон в проекте. Сейчас Presto тестируется рядом крупных интернет-сервисов, включая AirBnB и Dropbox.
По словам инженеров компании, обычным хранилищам данных будет нелегко обеспечить такую отзывчивость, как у Presto, учитывая количество данных, собираемое Facebook.
Хранилище данных Facebook превышает 300 петабайт информации о пользователях соцсети, хранящейся на кластерах Hadoop. Presto взаимодействует с этими данными с помощью интерактивного анализа, алгоритмов машинного обучения и схем групповой обработки.
Изначально для анализа данных Facebook использовала Hadoop MapReduce вместе с Hive. Но по мере роста хранилища, они стали слишком медленными.
Группа Facebook Data Infrastructure сначала искала ПО, способное быстро обрабатывать запросы, но не нашла достаточно зрелого решения, подходящего для масштабирования до необходимого уровня. Поэтому она разработала собственный движок обработки SQL-запросов с использованием Java.
Presto может выполнять многие из функций стандартных движков SQL, включая сложные запросы, агрегации, левые/правые внешние JOIN'ы, подзапросы и большинство простых агрегирующих и скалярных функций. Presto не умеет записывать результаты обратно в таблицы данных и создавать объединение таблиц, размер которых превышает некоторую отметку.
В отличие от Hive, Presto не использует MapReduce - что предусматривает запись на диск - а компилирует части запроса на лету и обрабатывает их в памяти. По утверждению Facebook, Presto в 10 раз эффективней использует ресурсы CPU и намного быстрей выполняет запросы, чем Hive и MapReduce вместе.
Presto - один из новейших движков обработки SQL-запросов, решающих проблему скорости обработки запросов к огромным наборам данных Hadoop. Pivotal - дистрибьютор Hadoop - разработала для этой цели Hawq, а Cloudera работает над собственным ПО под названием Impala.
Facebook наделила Presto еще одним преимуществом: возможностью работать не только с Hadoop, но и з другими источниками данных.
Источник
Комментариев нет:
Отправить комментарий