На днях мы выпустили в широкое обращение свой новый инструмент, 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 идеальным выбором для нашей инфраструктуры.
Ключевые особенности Airpal:
- Гибкий контроль доступа пользователей.
- Возможность поиска по таблицам и самих таблиц.
- Просмотр метаданных, разделов, схем и образцов строк.
- Удобный редактор создания запросов.
- Просмотр статуса выполнения запросов.
- Сохранение истории всех запросов с возможностью поиска по ней.
- Доступ к интерфейсу из обычного веб-браузера.
- Возврат результатов в виде CSV-файлов.
- Сохранение запросов для будущего повторного использования.
- Использование Dropwizard для обеспечения сервиса REST в Java.
- Для доставки сообщений от сервера клиенту используется SSE (Server Sent Events).
- Фронтэнд на JavaScript используется react.js.
Стараясь сохранить идеологию Presto, мы постарались упростить процедуру установки Airpal, так что его можно протестировать без безо всяких трудностей. Подробную информацию можно найти на GitHub.
Автор: AirbnbHabr