Apache Pinot ist ein verteilter Echtzeit-OLAP-Datenspeicher, der für die Bereitstellung skalierbarer Echtzeitanalysen mit geringer Latenz entwickelt wurde. Es kann Batch-Datenquellen (wie Hadoop HDFS, Amazon S3, Azure ADLS, Google Cloud Storage) sowie Stream-Datenquellen (wie Apache Kafka) aufnehmen.
Pinot wurde von Ingenieuren bei LinkedIn und Uber entwickelt und ist so konzipiert, dass es ohne Obergrenze vergrößert und verkleinert werden kann. Die Leistung bleibt immer konstant, basierend auf der Größe Ihres Clusters und einem erwarteten Schwellenwert für Abfragen pro Sekunde (QPS).
Leitfäden für den Einstieg, Bereitstellungsrezepte, Tutorials und mehr finden Sie in unserer Projektdokumentation unter https://docs.pinot.apache.org.
Pinot wurde ursprünglich bei LinkedIn entwickelt, um umfangreiche interaktive Echtzeit-Analyseanwendungen wie Who Viewed Profile, Company Analytics, Talent Insights und viele mehr zu ermöglichen. UberEats Restaurant Manager ist ein weiteres Beispiel für eine kundenorientierte Analytics-App. Bei LinkedIn unterstützt Pinot über 50 benutzerorientierte Produkte, erfasst Millionen von Ereignissen pro Sekunde und bedient über 100.000 Abfragen pro Sekunde mit einer Latenz von Millisekunden.
Schnelle Abfragen : Filtern und aggregieren Sie Petabyte-Datensätze mit P90-Latenzen im Zehn-Millisekunden-Bereich – schnell genug, um Live-Ergebnisse interaktiv in der Benutzeroberfläche zurückzugeben.
Hohe Parallelität : Da benutzerorientierte Anwendungen Pinot direkt abfragen, können Hunderttausende gleichzeitiger Abfragen pro Sekunde bearbeitet werden.
SQL-Abfrageschnittstelle : Auf die hochstandardisierte SQL-Abfrageschnittstelle kann über einen integrierten Abfrageeditor und eine REST-API zugegriffen werden.
Vielseitige Verknüpfungen : Führen Sie beliebige Fakt-/Dimensions- und Fakt-/Fakt-Verknüpfungen für Petabyte-Datensätze durch.
Spaltenorientiert : eine spaltenorientierte Datenbank mit verschiedenen Komprimierungsschemata wie Lauflänge, feste Bitlänge.
Pluggable Indexing : Pluggable Indexing-Technologien einschließlich Zeitstempel, Invertierung, StarTree, Bloom-Filter, Bereich, Text, JSON und Geodatenoptionen.
Stream- und Batch-Aufnahme : Aufnahme von Apache Kafka, Apache Pulsar und AWS Kinesis in Echtzeit. Batch-Aufnahme von Hadoop, Spark, AWS S3 und mehr. Kombinieren Sie Batch- und Streaming-Quellen zur Abfrage in einer einzigen Tabelle.
Upsert während der Echtzeitaufnahme : Aktualisieren Sie die Daten im großen Maßstab und mit Konsistenz
Integrierte Mandantenfähigkeit : Verwalten und sichern Sie Daten in isolierten logischen Namespaces für eine cloudfreundliche Ressourcenverwaltung.
Maßgeschneidert : Pinot ist horizontal skalierbar und fehlertolerant und lässt sich an Arbeitslasten im gesamten Speicher- und Durchsatzspektrum anpassen.
Cloud-nativ auf Kubernetes : Helm-Chart bietet eine horizontal skalierbare und fehlertolerante Cluster-Bereitstellung, die mit Kubernetes einfach zu verwalten ist.
Pinot wurde entwickelt, um OLAP-Abfragen in Echtzeit mit geringer Latenz für große Daten- und Ereignismengen auszuführen. Zusätzlich zur Stream-Aufnahme in Echtzeit unterstützt Pinot auch Batch-Anwendungsfälle mit den gleichen Garantien für niedrige Latenzzeiten. Es eignet sich in Kontexten, in denen schnelle Analysen wie Aggregationen für unveränderliche Daten erforderlich sind, möglicherweise mit Datenerfassung in Echtzeit. Pinot eignet sich sehr gut für die Abfrage von Zeitreihendaten mit vielen Dimensionen und Metriken.
Beispielabfrage:
SELECT sum (clicks), sum (impressions) FROM AdAnalyticsTable
WHERE
((daysSinceEpoch >= 17849 AND daysSinceEpoch <= 17856 )) AND
accountId IN ( 123456789 )
GROUP BY
daysSinceEpoch TOP 100
Möchten Sie zu Apache/Pinot beitragen? ?
Möchten Sie sich den Reihen der Open-Source-Committer von Apache Pinot anschließen? Dann schauen Sie sich den Beitragsleitfaden an, um zu erfahren, wie Sie sich am Code beteiligen können.
Wenn Sie einen Fehler oder eine Idee für eine neue Funktion haben, durchsuchen Sie die offenen Probleme, um zu sehen, woran wir bereits arbeiten, bevor Sie eine neue Funktion öffnen.
Wir haben auch einige Anfängerprobleme markiert, die neue Mitwirkende angehen können.
# 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
Informationen zur Einrichtung der UI-Entwicklung finden Sie in diesem Dokument.
Normale Pinot-Builds werden mit dem Befehl mvn clean install
durchgeführt.
Die Ausführung dieses Befehls kann jedoch lange dauern.
Für schnellere Builds wird empfohlen mvn verify -Ppinot-fastdev
zu verwenden, wodurch einige Plugins deaktiviert werden, die für die Entwicklung eigentlich nicht benötigt werden.
Ausführlichere Anweisungen finden Sie im Abschnitt „Schnelldemo“ in der Dokumentation.
Weitere Informationen finden Sie in unserer Projektdokumentation unter Pinot auf Kubernetes ausführen. Pinot bietet außerdem Kubernetes-Integrationen mit der interaktiven Abfrage-Engine Trino Presto und dem Datenvisualisierungstool Apache Superset.
Eine vollständige Beschreibung der Funktionen von Pinot finden Sie in der Pinot-Dokumentation.
Apache Pinot steht unter der Apache-Lizenz, Version 2.0