![](https://habrastorage.org/files/167/329/c31/167329c31b4b4574bb21f4c7536660b1.jpg)
На днях мы выпустили в широкое обращение свой новый инструмент, Airpal. Это веб-приложение, предназначенное для работы с базами данных, которое призвано дополнить PrestoDB от Facebook при анализе информации. И в этом посте мы бы хотели рассказать о его возможностях и особенностях.
Airpal — это открытый проект. Отличительной чертой приложения является то, что оно изначально создавалось с прицелом на пользователей, не являющихся техническими специалистами. Однако мы хотели дать им инструмент, позволяющий полноценно работать с массивами данных, а заодно помочь профессионалам повысить эффективность анализа.
Люди, регулярно занимающиеся формированием выборок и обработкой данных из SQL, знают, что эти процессы не всегда удобно организованы. Нужно запоминать, как были сформулированы запросы, копировать и вставлять их в командную строку, запускать многочисленные терминалы, — всё это замедляет работу и не особо приятно. Кроме того, если в коллективе есть новички, то для них кривая обучения может быть довольно крутой. И мы решили, что все эти досадные проблемы можно было бы решить с помощью хорошего UI.
Airpal работает в связке с PrestoDB, открытым движком SQL-запросов для работы с большими данными. При этом работать с Presto в этом случае могут не только программисты и специалисты по обработке данных, но и сотрудники других профессий. В ряде случаев такой тандем может служить недорогой альтернативой хранилищу данных. Кроме того, Airpal может выступать в роли более дружелюбного пользователю интерфейса для доступа к большим массивам данных, хранимых в кластере Hadoop.
Airpal позволил нам сделать доступ к большим данным гораздо более демократичным. Приложение используется внутри нашей компании уже около года, и порядка трети всех сотрудников работают с базами данных посредством этого инструмента. Сколько бронирований было совершено за день? Сколько людей за истёкшие сутки переночевали в местах, найденных через наш сервис? Сколько предложений имеется в конкретном регионе, городе, районе? Сколько пользователей говорят по-немецки или по-испански? На сегодняшний день в виде Hive-таблиц в HDFS у нас хранится около 1,5 петабайт данных — 25 миллионов бронирований в 34 000 городов по всему миру. И лишь со сравнительно небольшим количеством важных, ключевых таблиц мы можем использовать Presto в качестве обработчика запросов по умолчанию.
Ранее для работы с БД мы использовали веб-сервис Redshift. Но по ряду причин он нас не удовлетворял: требовал установки наборе ETL-инструментов (extract, transform, load) для предварительной подготовки данных, имел ограничение на количество одновременно исполняемых запросов. Кроме того, у Redshift очень малоинформативные сообщения об ошибках, что серьёзно затруднял дебаггинг.
С точки зрения произвольных запросов и итерирования в ходе анализа, Presto гораздо «умнее» и быстрее традиционных MapReduce-инструментов. Однако для нас самым полезным следствием внедрения Presto стало отсутствие необходимости усложнять процесс «интерактивного» формирования запросов. Поскольку мы работаем со своим собственным Hive-хранилищем, то можем позволить себе иметь «единственный источник достоверных данных», без тяжеловесных копий на отдельном уровне хранилища. А тот факт, что нам не нужно менять формат RC, в котором хранятся данные, сделал Presto идеальным выбором для нашей инфраструктуры.
![](https://habrastorage.org/files/090/cee/2dc/090cee2dcf5d4d93861d72816a13a18b.gif)
Ключевые особенности Airpal:
- Гибкий контроль доступа пользователей.
- Возможность поиска по таблицам и самих таблиц.
- Просмотр метаданных, разделов, схем и образцов строк.
- Удобный редактор создания запросов.
- Просмотр статуса выполнения запросов.
- Сохранение истории всех запросов с возможностью поиска по ней.
- Доступ к интерфейсу из обычного веб-браузера.
- Возврат результатов в виде CSV-файлов.
- Сохранение запросов для будущего повторного использования.
- Использование Dropwizard для обеспечения сервиса REST в Java.
- Для доставки сообщений от сервера клиенту используется SSE (Server Sent Events).
- Фронтэнд на JavaScript используется react.js.
Стараясь сохранить идеологию Presto, мы постарались упростить процедуру установки Airpal, так что его можно протестировать без безо всяких трудностей. Подробную информацию можно найти на GitHub.