Apache Pinot は、低遅延でスケーラブルなリアルタイム分析を提供するために構築されたリアルタイム分散 OLAP データストアです。バッチ データ ソース (Hadoop HDFS、Amazon S3、Azure ADLS、Google Cloud Storage など) だけでなく、ストリーム データ ソース (Apache Kafka など) からも取り込むことができます。
Pinot は LinkedIn と Uber のエンジニアによって構築され、上限なくスケールアップおよびスケールアウトできるように設計されています。パフォーマンスは、クラスターのサイズと予想される 1 秒あたりのクエリ (QPS) しきい値に基づいて常に一定に保たれます。
スタートガイド、デプロイメントレシピ、チュートリアルなどについては、https://docs.pinot.apache.org にあるプロジェクトドキュメントを参照してください。
Pinot は元々、Who Viewed Profile、Company Analytics、Talent Insights などの豊富なインタラクティブなリアルタイム分析アプリケーションを強化するために LinkedIn で構築されました。 UberEats Restaurant Manager は、顧客向け分析アプリのもう 1 つの例です。 LinkedIn では、Pinot は 50 以上のユーザー向け製品を強化し、1 秒あたり数百万のイベントを取り込み、ミリ秒の遅延で 1 秒あたり 100,000 以上のクエリを処理します。
高速クエリ: ペタバイトのデータ セットを数十ミリ秒の P90 レイテンシでフィルタリングおよび集計します。これは、UI で対話的にライブ結果を返すのに十分な速さです。
高い同時実行性: ユーザー向けアプリケーションが Pinot に直接クエリを実行すると、1 秒あたり数十万の同時クエリを処理できます。
SQL クエリ インターフェイス: 高度に標準的な SQL クエリ インターフェイスには、組み込みのクエリ エディターと REST API を介してアクセスできます。
多彩な結合: ペタバイトのデータセットに対して任意のファクト/ディメンション結合およびファクト/ファクト結合を実行します。
列指向: ランレングス、固定ビット長などのさまざまな圧縮スキームを備えた列指向のデータベース。
プラガブル インデックス: タイムスタンプ、反転、StarTree、ブルーム フィルター、範囲、テキスト、JSON、地理空間オプションなどのプラガブル インデックス テクノロジ。
ストリームとバッチ取り込み: Apache Kafka、Apache Pulsar、AWS Kinesis からリアルタイムで取り込みます。 Hadoop、Spark、AWS S3 などからのバッチ取り込み。バッチ ソースとストリーミング ソースを 1 つのテーブルに結合してクエリを実行します。
リアルタイム取り込み中のアップサート: 一貫性を保ちながら大規模なデータを更新します
組み込みのマルチテナンシー: クラウドに適したリソース管理のために、分離された論理名前空間でデータを管理および保護します。
スケールを考慮した構築: Pinot は水平方向にスケーラブルでフォールト トレラントであり、ストレージとスループットの範囲全体にわたるワークロードに適応できます。
Kubernetes 上のクラウドネイティブ: Helm チャートは、Kubernetes を使用して管理しやすい、水平方向にスケーラブルでフォールト トレラントなクラスター化デプロイメントを提供します。
Pinot は、大量のデータとイベントに対して低遅延でリアルタイム OLAP クエリを実行するように設計されています。リアルタイムのストリーム取り込みに加えて、Pinot は同様の低遅延保証を備えたバッチのユースケースもサポートしています。これは、リアルタイムのデータ取り込みを伴う、不変データに対する集計などの高速分析が必要なコンテキストに適しています。 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
UI 開発のセットアップについては、このドキュメントを参照してください。
通常の Pinot ビルドは、 mvn clean install
コマンドを使用して実行されます。
ただし、このコマンドの実行には時間がかかる場合があります。
ビルドを高速化するには、 mvn verify -Ppinot-fastdev
使用することをお勧めします。これにより、開発に実際には必要のない一部のプラグインが無効になります。
より詳細な手順については、ドキュメントの「クイック デモ」セクションを参照してください。
プロジェクトドキュメントの「Running Pinot on Kubernetes」を参照してください。 Pinot は、対話型クエリ エンジン Trino Presto およびデータ視覚化ツール Apache Superset との Kubernetes 統合も提供します。
Pinot の機能の詳細については、Pinot のドキュメントを参照してください。
Apache Pinot は Apache ライセンス、バージョン 2.0 に基づいています。