Apache Pinot est une banque de données OLAP distribuée en temps réel, conçue pour fournir des analyses évolutives en temps réel avec une faible latence. Il peut ingérer des sources de données par lots (telles que Hadoop HDFS, Amazon S3, Azure ADLS, Google Cloud Storage) ainsi que des sources de données de flux (telles que Apache Kafka).
Pinot a été construit par des ingénieurs de LinkedIn et Uber et est conçu pour évoluer sans limite supérieure. Les performances restent toujours constantes en fonction de la taille de votre cluster et d'un seuil de requêtes par seconde (QPS) attendu.
Pour obtenir des guides de démarrage, des recettes de déploiement, des didacticiels et bien plus encore, veuillez consulter la documentation de notre projet à l'adresse https://docs.pinot.apache.org.
Pinot a été initialement conçu chez LinkedIn pour alimenter de riches applications analytiques interactives en temps réel telles que Who Viewed Profile, Company Analytics, Talent Insights et bien d'autres. UberEats Restaurant Manager est un autre exemple d'application Analytics destinée aux clients. Chez LinkedIn, Pinot alimente plus de 50 produits destinés aux utilisateurs, ingérant des millions d'événements par seconde et traitant plus de 100 000 requêtes par seconde avec une latence d'une milliseconde.
Requêtes rapides : filtrez et agrégez des ensembles de données en pétaoctets avec des latences P90 en dizaines de millisecondes, suffisamment rapides pour renvoyer des résultats en direct de manière interactive dans l'interface utilisateur.
Concurrence élevée : avec des applications destinées aux utilisateurs interrogeant directement Pinot, il peut traiter des centaines de milliers de requêtes simultanées par seconde.
Interface de requête SQL : L'interface de requête SQL hautement standard est accessible via un éditeur de requêtes intégré et une API REST.
Jointures polyvalentes : effectuez des jointures fait/dimension et fait/fait arbitraires sur des ensembles de données de plusieurs pétaoctets.
Orienté colonne : une base de données orientée colonnes avec divers schémas de compression tels que Run length, Fixed Bit length.
Indexation enfichable : technologies d'indexation enfichables, notamment les options d'horodatage, inversé, StarTree, Bloom, plage, texte, JSON et géospatiales.
Ingestion de flux et par lots : ingérez depuis Apache Kafka, Apache Pulsar et AWS Kinesis en temps réel. Ingestion par lots depuis Hadoop, Spark, AWS S3 et plus encore. Combinez les sources par lots et en streaming dans une seule table pour les requêtes.
Upsert lors de l'ingestion en temps réel : mettez à jour les données à grande échelle et de manière cohérente
Multilocation intégrée : gérez et sécurisez les données dans des espaces de noms logiques isolés pour une gestion des ressources conviviale pour le cloud.
Conçu pour l'échelle : Pinot est évolutif horizontalement et tolérant aux pannes, adaptable aux charges de travail sur tout le spectre de stockage et de débit.
Cloud natif sur Kubernetes : la charte Helm fournit un déploiement en cluster évolutif horizontalement et tolérant aux pannes, facile à gérer à l'aide de Kubernetes.
Pinot est conçu pour exécuter des requêtes OLAP en temps réel avec une faible latence sur des quantités massives de données et d'événements. En plus de l'ingestion de flux en temps réel, Pinot prend également en charge les cas d'utilisation par lots avec les mêmes garanties de faible latence. Il convient aux contextes où des analyses rapides, telles que des agrégations, sont nécessaires sur des données immuables, éventuellement avec une ingestion de données en temps réel. Pinot fonctionne très bien pour interroger des données de séries chronologiques avec de nombreuses dimensions et métriques.
Exemple de requête :
SELECT sum (clicks), sum (impressions) FROM AdAnalyticsTable
WHERE
((daysSinceEpoch >= 17849 AND daysSinceEpoch <= 17856 )) AND
accountId IN ( 123456789 )
GROUP BY
daysSinceEpoch TOP 100
Vous voulez contribuer à apache/pinot ? ?
Vous souhaitez rejoindre les rangs des committers open source pour Apache Pinot ? Consultez ensuite le Guide de contribution pour savoir comment vous impliquer dans le code.
Si vous avez un bug ou une idée pour une nouvelle fonctionnalité, parcourez les tickets ouverts pour voir sur quoi nous travaillons déjà avant d'en ouvrir un nouveau.
Nous avons également marqué quelques problèmes pour débutants que les nouveaux contributeurs peuvent résoudre.
# 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
Pour la configuration du développement de l'interface utilisateur, reportez-vous à ce document.
Les versions normales de Pinot sont effectuées à l'aide de la commande mvn clean install
.
Cependant, l'exécution de cette commande peut prendre beaucoup de temps.
Pour des versions plus rapides, il est recommandé d'utiliser mvn verify -Ppinot-fastdev
, qui désactive certains plugins qui ne sont pas réellement nécessaires au développement.
Des instructions plus détaillées peuvent être trouvées dans la section Démo rapide de la documentation.
Veuillez vous référer à Exécuter Pinot sur Kubernetes dans notre documentation de projet. Pinot fournit également des intégrations Kubernetes avec le moteur de requête interactif Trino Presto et l'outil de visualisation de données Apache Superset.
Consultez la documentation Pinot pour une description complète des fonctionnalités de Pinot.
Apache Pinot est sous licence Apache, version 2.0