Что такое Presto или PrestoDB?
Presto (или PrestoDB) – это распределенная система запросов SQL с открытым исходным кодом, разработанная с нуля для быстрого выполнения аналитических запросов к данным любого размера. Presto поддерживает нереляционные (Распределенную файловую систему Hadoop (HDFS), Amazon S3, Cassandra, MongoDB, HBase) и реляционные источники данных (MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server и Teradata).
Presto может запрашивать данные там, где они хранятся, без необходимости перемещать их в отдельную аналитическую систему. Запросы выполняются параллельно в архитектуре, основанной исключительно на памяти, и большинство результатов приходит за секунды. Ядром Presto пользуются многие известные компании, например Facebook, Airbnb, Netflix, Atlassian и Nasdaq.
Как развивался Presto?
Компания Presto начала свою деятельность как проект для Facebook по выполнению интерактивных аналитических запросов к хранилищу данных объемом 300 ПБ, созданному на основе больших кластеров на базе Hadoop (HDFS). До разработки Presto компания Facebook использовала проект Apache Hive, который был создан и развернут в 2008 году, чтобы привнести понимание синтаксиса SQL в экосистему Hadoop. Hive оказал значительное влияние на Hadoop, упростив сложные задания Java MapReduce в запросы, подобные SQL и обеспечив при этом возможность выполнять их в больших масштабах. Однако он не был оптимизирован для обеспечения высокой производительности, необходимой для интерактивных запросов.
В 2012 году группа Facebook Data Infrastructure создала Presto – интерактивную систему запросов, которая может быстро работать в петабайтном масштабе. Она была запущена в масштабах всей компании весной 2013 года. В ноябре 2013 года компания Facebook открыла исходный код Presto под лицензией Apache и сделала его общедоступным для загрузки на Github. Сегодня Presto стал популярным инструментом для выполнения интерактивных запросов в Hadoop, и в него поступает множество материалов от Facebook и других организаций. Внедренным в Facebook Presto пользуются более тысячи сотрудников, которые ежедневно обрабатывают более 30 000 запросов и один петабайт данных.
Как работает Presto?
Presto – это распределенная система, работающая на Hadoop и использующая архитектуру, аналогичную классической системе управления базами данных с массивно-параллельной обработкой (MPP). У Presto есть один узел-координатор, работающий синхронно с несколькими рабочими узлами. Пользователи отправляют свои SQL-запросы координатору, который с помощью собственного механизма обработки и выполнения анализирует и выстраивает распределенный запрос по рабочим узлам. Он разработан для поддержки стандартной семантики ANSI SQL, включая сложные запросы, агрегирование, соединения, внешние соединения влево или вправо, подзапросы, оконные функции, различные вычисления и приблизительные процентили.
После компиляции запроса Presto обрабатывает его в несколько этапов на рабочих узлах. Вся обработка выполняется в памяти и распределяется между этапами по сети, что позволяет избежать ненужных накладных расходов на ввод-вывод. Добавление большего количества рабочих узлов обеспечивает больший параллелизм и ускоряет обработку.
Чтобы сделать Presto доступным для любого источника данных, он был разработан с использованием абстракции хранилища, что упрощает встраивание подключаемых коннекторов. В связи с этим у Presto есть большое количество коннекторов, в том числе к нереляционным (Распределенная файловая система Hadoop (HDFS), Amazon S3, Cassandra, MongoDB, HBase) и реляционным источникам (MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server и Teradata). Данные запрашиваются там, где они хранятся, без необходимости переноса их в отдельную аналитическую систему.
В чем разница между Presto и Hadoop?
Presto – это ядро обработки распределенных SQL‑запросов с открытым исходным кодом, созданное для выполнения запросов к данным в HDFS и других системах. В отличие от Hadoop (HDFS), у него нет собственной системы хранения данных. По сравнению с Hadoop, Presto является бесплатным, но организации комбинируют их для решения более масштабных бизнес-задач. Presto может быть установлен с любой реализацией Hadoop и поставляется в дистрибутиве Amazon EMR Hadoop.
Кто использует Presto?
Presto широко используется в производстве во многих известных организациях. Например, Facebook, Airbnb, Netflix, Atlassian, Nasdaq, и пр. Внедренным в Facebook Presto пользуются более тысячи сотрудников, которые ежедневно обрабатывают более 30 000 запросов и один петабайт данных. В среднем Netflix обрабатывает около 3500 запросов в день в своих кластерах Presto. Airbnb создал Airpal – веб-инструмент с открытым исходным кодом для выполнения запросов, который работает поверх Presto. Сообщество Presto можно найти на этом форуме и на странице Facebook.
Как развернуть Presto в облаке?
Presto – оптимальная рабочая нагрузка в облаке, поскольку за счет масштаба облако обеспечивает производительность, масштабируемость, надежность, доступность и значительную экономию. Для запуска кластера Presto потребуется всего несколько минут. Не нужно заниматься выделением узлов, настройкой Presto, конфигурацией или оптимизацией кластера.
Как внедрить Presto в облако с помощью AWS?
Amazon EMR и Amazon Athena – лучшие варианты для развертывания Presto в облаке, поскольку они обеспечивают интеграцию и тестирование, а AWS – масштабируемость, простоту и экономичность. С помощью Amazon EMR кластеры Presto можно запускать за считаные минуты. При этом не нужно выделять узлы, настраивать и оптимизировать кластер или изменять конфигурацию Presto. EMR позволяет выделять от одного до сотен и даже тысяч вычислительных инстансов за считанные минуты. Amazon Athena позволяет развертывать Presto с помощью платформы бессерверных вычислений AWS. Больше не нужно настраивать и управлять серверами, виртуальными машинами или кластерами. Просто введите свои данные в Amazon S3, определите схему и начните выполнять запросы с помощью встроенного редактора запросов или существующих инструментов бизнес-аналитики (BI). Athena автоматически параллелирует ваш запрос и динамически масштабирует ресурсы для быстрого его выполнения. Вы платите только за выполняемые запросы.
AWS: дальнейшие шаги
Получите мгновенный доступ к уровню бесплатного пользования AWS.