Apache Pinot — это распределенное хранилище данных OLAP, работающее в режиме реального времени, созданное для предоставления масштабируемой аналитики в реальном времени с низкой задержкой. Он может получать данные из пакетных источников данных (таких как Hadoop HDFS, Amazon S3, Azure ADLS, Google Cloud Storage), а также из источников потоковых данных (таких как Apache Kafka).
Pinot был создан инженерами LinkedIn и Uber и предназначен для масштабирования без каких-либо верхних ограничений. Производительность всегда остается постоянной в зависимости от размера вашего кластера и порогового значения ожидаемого количества запросов в секунду (QPS).
Руководства по началу работы, рецепты развертывания, учебные пособия и многое другое можно найти в документации нашего проекта по адресу https://docs.pinot.apache.org.
Первоначально Pinot был создан в LinkedIn для поддержки многофункциональных интерактивных аналитических приложений в режиме реального времени, таких как «Кто просматривал профиль», «Аналитика компании», «Аналитика талантов» и многих других. Менеджер ресторана UberEats — еще один пример аналитического приложения, ориентированного на клиента. В LinkedIn Pinot поддерживает более 50 продуктов, ориентированных на пользователей, обрабатывая миллионы событий в секунду и обслуживая более 100 тысяч запросов в секунду с задержкой в миллисекунды.
Быстрые запросы : фильтруйте и агрегируйте петабайтные наборы данных с задержкой P90 в десятки миллисекунд — достаточно быстро, чтобы интерактивно возвращать результаты в реальном времени в пользовательском интерфейсе.
Высокий параллелизм : поскольку приложения, ориентированные на пользователя, напрямую запрашивают Pinot, он может обслуживать сотни тысяч одновременных запросов в секунду.
Интерфейс SQL-запросов . Стандартный интерфейс SQL-запросов доступен через встроенный редактор запросов и REST API.
Универсальные соединения : выполнение произвольных соединений фактов/измерений и фактов/фактов на наборах петабайтных данных.
Столбцово-ориентированная : база данных, ориентированная на столбцы, с различными схемами сжатия, такими как длина прогона, фиксированная длина в битах.
Подключаемая индексация : подключаемые технологии индексации, включая метку времени, инвертацию, StarTree, фильтр Блума, диапазон, текст, JSON и геопространственные параметры.
Потоковая и пакетная обработка : прием данных из Apache Kafka, Apache Pulsar и AWS Kinesis в режиме реального времени. Пакетный прием данных из Hadoop, Spark, AWS S3 и других источников. Объедините источники пакетной и потоковой передачи в одну таблицу для выполнения запросов.
Upsert во время приема в реальном времени : обновляйте данные в масштабе и согласованно.
Встроенная многопользовательская среда . Управляйте и защищайте данные в изолированных логических пространствах имен для удобного управления ресурсами в облаке.
Создан для масштабирования . Pinot является горизонтально масштабируемым и отказоустойчивым решением, адаптируемым к рабочим нагрузкам по всему спектру хранилища и пропускной способности.
Облачная поддержка Kubernetes : Helm Chart обеспечивает горизонтально масштабируемое и отказоустойчивое кластерное развертывание, которым легко управлять с помощью Kubernetes.
Pinot предназначен для выполнения OLAP-запросов в реальном времени с низкой задержкой для больших объемов данных и событий. Помимо приема потока в реальном времени, Pinot также поддерживает варианты пакетного использования с такими же гарантиями низкой задержки. Он подходит в контекстах, где требуется быстрая аналитика, такая как агрегирование, для неизменяемых данных, возможно, с приемом данных в реальном времени. Пино очень хорошо работает для запроса данных временных рядов с множеством измерений и показателей.
Пример запроса:
SELECT sum (clicks), sum (impressions) FROM AdAnalyticsTable
WHERE
((daysSinceEpoch >= 17849 AND daysSinceEpoch <= 17856 )) AND
accountId IN ( 123456789 )
GROUP BY
daysSinceEpoch TOP 100
Хотите внести свой вклад в Apache/Pinot? ?
Хотите пополнить ряды разработчиков открытого исходного кода Apache Pinot? Затем ознакомьтесь с Руководством для участников, чтобы узнать, как вы можете принять участие в написании кода.
Если у вас есть ошибка или идея для новой функции, просмотрите открытые проблемы, чтобы увидеть, над чем мы уже работаем, прежде чем открывать новую.
Мы также отметили некоторые проблемы новичков, с которыми могут справиться новые участники.
# Clone a repo
$ git clone https://github.com/apache/pinot.git
$ cd pinot
# Build Pinot
# -Pbin-dist is required to build the binary distribution
# -Pbuild-shaded-jar is required to build the shaded jar, which is necessary for some features like spark connectors
$ mvn clean install -DskipTests -Pbin-dist -Pbuild-shaded-jar
# Run the Quick Demo
$ cd build/
$ bin/quick-start-batch.sh
Для настройки разработки пользовательского интерфейса обратитесь к этому документу.
Обычные сборки Pinot выполняются с помощью команды mvn clean install
.
Однако выполнение этой команды может занять много времени.
Для более быстрой сборки рекомендуется использовать mvn verify -Ppinot-fastdev
, который отключает некоторые плагины, которые на самом деле не нужны для разработки.
Более подробные инструкции можно найти в разделе «Быстрая демонстрация» документации.
Пожалуйста, обратитесь к разделу «Запуск Pinot в Kubernetes» в документации нашего проекта. Pinot также обеспечивает интеграцию Kubernetes с интерактивным механизмом запросов Trino Presto и инструментом визуализации данных Apache Superset.
Ознакомьтесь с документацией Pinot для получения полного описания функций Pinot.
Apache Pinot находится под лицензией Apache версии 2.0.