Аналитика данных

Uber AresDB - это база данных с открытым исходным кодом на базе графического процессора для крупномасштабных аналитических рабочих нагрузок.

Стек с открытым исходным кодом поддерживает конвейеры аналитики в реальном времени в Uber.

Недавно я начал выпускать образовательный информационный бюллетень, посвященный ИИ, на который уже подписано более 70 000 человек. TheSequence - это информационный бюллетень, ориентированный на машинное обучение (то есть без рекламы, новостей и т. Д.), На чтение которого уходит 5 минут. Цель состоит в том, чтобы держать вас в курсе проектов, исследовательских работ и концепций машинного обучения. Пожалуйста, попробуйте, подписавшись ниже:



Uber входит в число крупнейших разработчиков инфраструктуры и фреймворков для обработки данных с открытым исходным кодом. От фреймворков машинного обучения, таких как Horovod или Pyro, до инфраструктур временных рядов, таких как M3, команда инженеров Uber невероятно активно открывала исходный код различных стеков, которые являются ключевыми строительными блоками конвейера обработки данных Uber. Ранее на этой неделе Uber представил еще одну супер классную технологию, позволяющую реализовать современные аналитические решения. AresDB - это база данных и среда выполнения для масштабируемых рабочих нагрузок аналитики в реальном времени.

Действительно ли рынку нужна еще одна аналитическая база данных в реальном времени? Это была моя первая реакция, когда я прочитал об AresDB. Проблема аналитики в реальном времени, особенно данных временных рядов, хорошо известна, и есть несколько очень продвинутых стеков, таких как Apache Pinot, OmniSci и, даже в некоторой степени, Elasticsearch, которые позволяют использовать многие из них. случаи. Хотя возможности этих решений невероятно высоки, важно понимать, что Uber работает на уровне масштабов, который неизвестен большинству программных платформ на рынке. Приложения Uber собирают миллионы точек данных в секунду, которые необходимо использовать для принятия решений в реальном времени в самых разных областях, таких как обнаружение мошенничества или ценообразование. Широкое распространение графических процессоров (GPU) открыло новые возможности для масштабирования аналитических рабочих нагрузок. Однако сколько вы знаете механизмов анализа в реальном времени, которые эффективно используют графические процессоры. Это проблема, которую нужно решить при настройке AresDB.

Масштабирование с помощью графических процессоров

Идея использования графических процессоров для масштабирования рабочих нагрузок аналитики в реальном времени кажется идеальной для Uber. У компании по продаже райдеров есть тысячи аналитических процессов, которые выполняют вычисления в реальном времени на основе данных временных рядов, состоящих из миллиардов точек данных, собранных за несколько дней. По сравнению с традиционными ЦП, графические процессоры предлагают очень ощутимые преимущества для выполнения рабочих нагрузок аналитики в реальном времени:

  • Параллельная обработка данных очень быстро.
  • Обеспечивают большую пропускную способность вычислений (GFLOPS / s), что делает их подходящими для тяжелых вычислительных задач (на единицу данных), которые можно распараллелить.
  • Предлагают более высокую пропускную способность (а не задержку) доступа к данным от вычислений к хранилищу (от ALU к глобальной памяти графического процессора), что делает их идеальными для обработки параллельных задач, связанных с вводом-выводом (памятью), для которых требуется большой объем данных.

Механизм аналитики в реальном времени, оптимизированный для архитектур на базе графических процессоров, имеет возможность масштабировать произвольные запросы / вычисления для больших подмножеств набора данных без необходимости какой-либо оптимизации данных.

Введите AresDB

Дизайн AresDB сочетает в себе как дисковое хранилище, так и хранилище в памяти, а также вычисления на CPU и GPU. Стек следует модели хранения данных в столбцах, популярной в таких технологиях, как MemSQL или AWS RedShift. Архитектурно AresDB следует трем ключевым принципам для достижения высокой производительности при аналитических вычислениях в реальном времени:

  • Хранилище на основе столбцов со сжатием: эта модель используется для эффективности хранилища (меньшее использование памяти в байтах для хранения данных) и эффективности запросов (меньше передачи данных из памяти ЦП. в память GPU во время запроса)
  • Обновление в реальном времени с дедупликацией первичного ключа: актуально для обеспечения высокой точности данных и актуальности данных почти в реальном времени в течение нескольких секунд.
  • Обработка запросов на базе графического процессора: используется для высокопараллельной обработки данных на основе графического процессора, обеспечивающей малую задержку запроса (от нескольких секунд до секунд).

Часть AresDB выглядит как любой другой движок базы данных в реальном времени. Данные в AresDB хранятся на диске, но переключаются в память для вычислений в реальном времени. Процессы приема данных работают в стандартных ЦП, и платформа поддерживает отдельную базу данных со схемой и соответствующими метаданными основных структур данных. Однако при обработке запроса в реальном времени AresDB переключает вычисления из памяти хоста в память GPU для достижения более высокой производительности. Переключатель реального времени на вычислительных машинах - одна из ключевых возможностей AresDB. На высоком уровне архитектура AresDB проиллюстрирована на следующем рисунке:

Модель хранения в AresDB основана на двух фундаментальных наборах таблиц:

· Таблицы фактов: таблицы фактов AresDB хранят события / факты, которые происходят в реальном времени, и каждое событие связано с временем события, причем таблица часто запрашивается по времени события.

· Таблицы измерений: таблицы измерений AresDB хранят текущие свойства объектов (включая города, клиентов и водителей). По сравнению с таблицами фактов, которые со временем растут бесконечно, таблицы измерений всегда ограничены размером.

В AresDB прием данных абстрагируется HTTP API, который может получать пакет записей upsert. После получения запроса API AresDB записывает пакет upsert в журналы повтора для восстановления. После этого AresDB идентифицирует и пропускает поздние записи в таблицах фактов для загрузки в оперативное хранилище. Запись считается «запоздалой», если время ее события старше, чем время события отсечки в архиве. Для записей, которые не считаются «запоздалыми», AresDB использует индекс первичного ключа, чтобы найти пакет в оперативном хранилище, где они должны быть применены.

Помимо HTTP API, AresDB обеспечивает интеграцию с несколькими источниками данных, такими как Apache Spark, Apache Flink или Apache Kafka, для масштабирования больших пакетных вставок. Расширяемая модель программирования AresDB позволяет добавлять новые соединители для интеграции с основными данными и бизнес-системами.

Для запросов данных AresDB использует язык запросов Ares (AQL), ​​который использует формат, подобный JSON, для представления команд запроса. Синтаксис AQL включает такие конструкции, как измерения или меры, которые являются собственными представлениями столбчатых моделей хранения. Представление такого запроса, как SELECT count (*) FROM trips GROUP BY city_id WHERE status = ‘completed’ AND request_at ›= 1512000000 в AQL, выглядит следующим образом:

{
 “table”: “trips”,
 “dimensions”: [
   {“sqlExpression”: “city_id”}
 ],
 “measures”: [
   {“sqlExpression”: “count(*)”}
 ],
;”>  “rowFilters”: [
   “status = ‘completed'”
 ],
 “timeFilter”: {
   “column”: “request_at”,
   “from”: “2 days ago”
 }
}

Хотя AQL является основным языком запросов в AresDB, команда инженеров Uber изучает планы по поддержке SQL, чтобы упростить внедрение платформ. Как и любой другой новый язык запросов, AQL требует нового механизма выполнения, который может анализировать и выполнять запросы данных. Механизм запросов AQL использует фреймворк NVIDIA's Thrust для распараллеливания выполнения запросов в среде графического процессора.

AresDB - новейшее дополнение к растущему стеку науки о данных и аналитики Uber. По крайней мере, функционально AresDB кажется естественным дополнением к другим технологиям Uber, таким как M3, для обеспечения масштабируемого анализа временных рядов. Хотя не многие компании работают с масштабами данных Uber, почти все согласятся, что включить аналитику в реальном времени для больших наборов данных - задача далеко не из легких. Простота архитектуры и интеграция с широко распространенными инфраструктурами данных позволяет AresDB поддерживать рабочие нагрузки аналитики в реальном времени во многих средах.