Airbnb — популярный сервис, который помогает туристам найти жильё в чужом городе. И речь не о простых гостиничных номерах. На Airbnb для съёма доступно всё, что можно представить, начиная с раскладушки на ночь и заканчивая частным островом, причём хозяева, как правило, не компании, а обычные люди. За пять лет пользователями Airbnb стали более девяти миллионов человек, причём почти пять миллионов добавились за последний год. Количество данных, с которыми приходится иметь дело стартапу, растёт ещё быстрее.
Жизнь в иглу, построенном из снега, обходится недёшево.Объём архивных данных, накопленных Airbnb, составляет по меньшей мере два петабайта. Ежедневно компания обрабатывает около 22 терабайтов информации при помощи хранилища, построенного на основе Apache Hadoop и Hive. Информация поступает из множества источников. При таком числе пользователей даже серверные логи растут с пугающей скоростью. Кроме того, используется информация, накопленная внешними аналитическими приложениями, и разнообразные наборы данных, сгенерированные самим сервисом.
Требования к инструментам, которые обрабатывает эти данные, тоже различные. Многие из них предназначены исключительно для внутреннего использования. К этой категории относятся, например, средства, позволяющие изучать особенности поведения посетителей. Это не особенно срочная задача, поэтому такие отчёты можно автоматически генерировать раз в сутки. Встроенный поисковик сайта или рекомендательная система, доступные обычным пользователям, — совсем другое дело. Они должны выдавать ответ «на лету».
Серверное оборудование, необходимое для того, чтобы справляться с огромной нагрузкой, компания арендует в Amazon Web Services. Первоначально в Airbnb применяли также и Amazon Elastic MapReduce, однако теперь программное решение полностью основано на открытом коде и собственных разработках.
В Airbnb можно найти средневековые замки, особняки, баржи и даже домики на деревьях.Основа софтверной инфраструктуры Airbnb — это кластерный менеджер Apache Mesos, Специалисты компании сравнивают его с операционной системой, предназначенной не для отдельного компьютера, а для целого кластера. Mesos автоматически распределяет доступные серверные ресурсы между различными приложениями, следя, чтобы загрузка машин всегда была максимальной.
Mesos справляется с кластерами, состоящими из десятков тысяч узлов. Такая способность к масштабированию делает его особенно привлекательным для крупных интернет-компаний, обслуживающих миллионы пользователей. Кроме Airbnb, Mesos используют Twitter и видеосервис Vimeo.
В Airbnb предпочитают Mesos по двум причинам. Во-первых, он позволяет обходиться меньшим количеством серверов. Иными словами, это выгодно. Во-вторых, автоматическое управление ресурсами упрощает работу программистов. В результате команды разработчиков могут действовать оперативнее.
http://youtu.be/Hal00g8o1iY
Для регулярного запуска процессов, которые время от времени перерабатывают данные, генерируя поисковые индексы, отчёты для бизнес-аналитики, а также обеспечивают работу системы рекомендации цен и детектора мошеннических транзакций, в Airbnb разработали систему под названием Chronos. Как пишет в блоге компании инженер Airbnb Бренден Мэтьюз, проблема, которую решает эта система, куда сложнее, чем кажется.
Chronos фактически представляет собой распределённую и «пуленепробиваемую» версию cron — демона UNIX, автоматически запускающего программы в установленное время. В отличие от cron, Chronos предназначен для использования в кластерах в сочетании с Mesos. Кроме того, он обладает пользовательским интерфейсом, с помощью которого аналитики могут узнать, какие процессы успешно отработали своё, а какие — остановились из-за ошибки.
Интерфейс Chronos.Обработкой данных «на лету» заведует ещё одна система с открытыми исходниками — Storm. Если Hadoop предназначается для исполнения пакетных заданий, то Storm пропускает через себя потоки информации в реальном времени. При этом задачи Storm могут без помех исполняться на тех же узлах кластера, которые задействованы для Hadoop или Chronos. Storm используют не только в Airbnb, но и в Twitter, купонном сервисе Gropon и гигантах китайской электронной коммерции Alibaba.com и Taobao.com.
Одним из примеров использования Storm может служить персонализированная поисковая система Airbnb. Её основа — подбор предложений по принципу географической близости к указанному месту, однако при ранжировании учитывается масса других факторов, связанных с конкретным пользователем, в том числе его настройки, известные социальные связи, история заказов, а также комментарии и оценки, которые он оставлял на сервисе.
В Airbnb ценят информацию и всецело полагаются на её анализ. «Мы хотим применять данные во время принятия каждого решения, — говорит вице-президент по техническим решениям Майк Кёртис. — Мы хотим быть компанией, путь которой задают данные».