このページの内容

Awesome Streaming

Streamingを扱う資料や関連プロジェクトをまとめたAwesomeリストです。

目次

エンジンとプラットフォーム

  • Aeron Java/C++ - 信頼性の高いUDPユニキャスト、マルチキャスト、IPCメッセージ転送。
  • Apache Apex Archived Java - 大規模データストリームおよびバッチ処理向けの統合プラットフォーム
  • Apache Flink Java - 有限/無限ストリーム上でステートフルな計算を実行する分散エンジン。
  • Apache Heron Archived Java - Twitterで開発された元の分散かつ障害耐性のストリーム処理エンジン。
  • Apache Kafka Java/Scala - 高性能データパイプラインおよびアプリケーション向けの分散イベントストリーミングプラットフォーム
  • Apache Pulsar Java - 分散型のパブリッシュ・サブスクリプションメッセージおよびイベントストリーミングプラットフォーム
  • Apache RocketMQ Java - イベント駆動アプリケーション向けのクラウドネイティブなメッセージおよびストリーミングプラットフォーム
  • Apache Samza Java/Scala - Apache Kafkaに基づく分散ストリーム処理フレームワークで、スタンドアローンおよびYARNのデプロイオプションを提供
  • Apache Spark Streaming Scala/Java/Python/R - Apache Spark上でスケーラブルかつ障害耐性のストリーム処理
  • Apache Storm Java - 無限ストリームのデータを信頼性高く処理するための分散リアルタイム計算システム
  • Apache StreamPipes Java/Python/TypeScript - インダストリアルIoT向けのセルフサービスプラットフォームで、データストリームの接続、分析、探索を行う
  • ArkFlow Rust - 高性能ストリーム処理エンジンで、拡張可能なソース、プロセッサ、シンクを提供
  • Arroyo Rust - 無限データ上の状態を持つSQL計算に適した分散ストリーム処理エンジン
  • AthenaX Archived Java - Uberが開発し、現在は廃止されたSQLベースのストリーミング分析プラットフォーム。
  • AutoMQ Java/Scala - 永続データをオブジェクトストレージへ保存する、ディスクレスのKafka互換ストリーミングプラットフォーム。
  • Bytewax Python/Rust - コミュニティが維持するPythonフレームワークで、Rustベースの分散エンジンで状態を持つストリーム処理を提供
  • eKuiper Go - リソース制限されたIoTエッジデバイス向けの軽量データストリーム処理エンジン
  • Esper Archived Java - 複雑イベント処理、ストリーミングSQL、イベントシリーズ分析エンジン
  • Fluvio Rust/WASM - コンポジブルで状態を持つデータストリーミングシステムで、プログラム可能なインライン計算を提供
  • Gazette Go - クラウドストレージをバックアップしたストリーミングインフラで、SQL、バッチ、ミリ秒遅延ストリーム処理を統合
  • Gearpump Scala - Akkaに基づく軽量なリアルタイム分散ストリーミングエンジン
  • hailstorm Archived Haskell - Stormをベースにした、正確に1回実行(exactly-once)の意味を持つ分散ストリーミング処理
  • Hazelcast Jet Archived Java - 開発がHazelcast Platformに移行したストリームおよびバッチ処理エンジン
  • HStreamDB Haskell - IoTデータのストレージとリアルタイム処理に特化したクラウドネイティブストリーミングデータベース
  • ksqlDB Java - ストリーム処理アプリケーションに特化したソース公開データベース
  • LaminarDB Rust - Apache ArrowおよびDataFusionに基づく埋め込み型ストリーミングSQLエンジン
  • LightSaber Archived C++ - ウインドウ集計にコード生成を用いたマルチコアストリーミング処理エンジン
  • LogDevice Archived C++ - Facebookのアーカイブされた順序データ用分散ストレージシステム
  • Maki Nage Archived Python - KafkaおよびReactiveXをベースにしたデータサイエンティスト向けストリーミング処理フレームワーク
  • Mantis Java - Netflixが開発したリアルタイムかつ運用中心のストリーミング処理アプリケーション構築プラットフォーム
  • Materialize Rust - 変化するデータ上での継続的に更新されるビューを維持するインクリメンタルSQLエンジン
  • Metaq Archived Java - Taobaoの分散メッセージングシステム
  • mupd8 (Muppet) Archived Scala/Java - ファストモーブデータストリームの処理に特化したMapReduceスタイルのフレームワーク
  • NATS Streaming Archived Go - 非推奨のディスクベースメッセージングシステムで、NATS JetStreamに置き換えられている
  • NebulaStream C++ - クラウド・エッジ・センサー環境向けデータ管理システム
  • NSQ Go - スケールを考慮したリアルタイム分散メッセージングプラットフォーム
  • Numaflow Rust/Go/TypeScript - Kubernetesネイティブで、言語に依存しないスケーラブルなイベント駆動アプリケーションプラットフォーム
  • Onyx Archived Clojure - 分散型・マスタレス・障害耐性のあるデータ処理プラットフォーム
  • PipelineDB Archived C - 未維持のPostgreSQL拡張で、時系列データに対する継続的なSQL集計を実現
  • Proton C++ - ClickHouseをベースにした統合ストリーミングおよび歴史データ分析データベース
  • Redpanda C++ - ZooKeeperやJVMなしでKafka APIと互換性のあるストリーミングデータプラットフォーム
  • RisingWave Rust - イベント駆動アプリケーション、リアルタイムETL、継続的な分析向けのPostgreSQLと互換性のあるストリーミングデータベース
  • S4 Archived Java - 連続した無限データストリームの処理を行うための退役した分散プラットフォーム
  • SABER Archived Java/C - ウィンドウベースのハイブリッドCPU/GPUストリーミング処理エンジン
  • Scramjet Cloud Platform TypeScript/Python - エッジ、サーバー、クラウドインフラでデータ処理プログラムを実行・管理するための分散ランタイム
  • SensorBee Archived Go - IoT向けに停止した軽量ストリーミング処理エンジン
  • Siddhi Java - ストリーミングSQLおよび複雑イベント処理エンジン
  • SPQR Archived Java - パイプラインを介して高量データストリームを処理するための動的フレームワーク
  • Squall Archived Java - Apache Stormに基づくオンラインSQLクエリ処理エンジン
  • StreamCQL Archived Java - Stormベースのリアルタイム計算用継続クエリ言語
  • Teknek Archived Java - インタラクティブなストリームオペレータ言語シェルを備えたストリーミング処理プラットフォーム
  • Tigon Archived C++/Java - HadoopおよびHBaseに基づく高スループットリアルタイムストリーミング処理フレームワーク
  • Trill Archived C# - Microsoft Researchから提供された時系列およびストリーミングデータの単一ノードクエリプロセッサ
  • Wally Archived Pony - かつてWallarooと呼ばれた分散ストリーミング処理フレームワーク
  • Wingfoil Rust/Python/TypeScript - レイテンシが重要なシステム向けのグラフベースストリーミング処理エンジン

ライブラリ、SDK、プログラミングモデル

  • Akka Scala/Java - JVM上で並列・分散・耐障害アプリケーションを実行・管理するためのツールキットおよびランタイム
  • Akka Streams Scala/Java - Akkaアクタに基づく反応型ストリーム実装
  • Apache Beam Java/Python/Go - バッチおよびストリーミングデータ処理向けの統一プログラミングモデルおよび言語特定のSDK
  • Apache Edgent Archived Java - ゲートウェイおよびエッジデバイス上のストリーミング分析向けに退役したプログラミングモデルおよびランタイム
  • Apache Kafka Streams Java - Apache Kafkaに含まれるストリーミング処理ライブラリ
  • Apache Pekko Scala/Java - 非同期、分散、耐障害アプリケーション向けオープンソースツールキット。Akka 2.6から分岐したもの。
  • Apache SAMOA Archived Java - 停用された分散ストリーミング機械学習フレームワーク。
  • Apache StormCrawler Java - Apache StormをベースとしたスケーラブルなウェブスクレイピングSDK。
  • CapyMOA Python/Java - データストリーム向けの機械学習ライブラリ。Python APIとMOAバックエンドを備える。
  • coast Archived Scala - Apache Samza上で正確1回データフロー図を構築するためのDSL。
  • Daggy C++ - データストリームの集計およびキャプチャを行うためのユーティリティおよび開発ライブラリ。
  • DataSketches Java - ストキャスティックストリーミングアルゴリズム(スケッチ)を含むApacheライブラリ。
  • FastStream Python - Kafka、RabbitMQ、NATS、Redis、MQTTを用いたイベント駆動アプリケーションの構築に用いる非同期フレームワーク。
  • Faust Archived Python - Kafka Streamsにインスパイアされた、廃止されたPythonストリーム処理ライブラリ。
  • FS2 Scala - Scala向けの合成ストリーミングI/Oライブラリ。
  • Jubatus Archived C++ - オンライン機械学習向けの分散処理フレームワークおよびライブラリ。
  • Kzmlabs StateFun Actors Java - Apache Flink 2.xにおける状態を持つアクター。キーごとの持続可能な状態、正確1回のメッセージング、KafkaおよびKinesis I/Oを備える。
  • MediaPipe C++/Python/Java/TypeScript - ライブおよびストリーミングメディア向けのクロスプラットフォームかつカスタマイズ可能な機械学習ソリューション。
  • Monix Scala - 非同期およびイベントベースプログラム向けの高性能ScalaおよびScala.jsライブラリ。
  • Numalogic Python - 機械学習モデルおよびツールのコレクション。運用時系列データにおける異常検知および予測に用いる。
  • Pulsar Archived Python - Python向けアクターベースのイベント駆動コンカレンシーフレームワーク。
  • Quix Streams Python - Apache Kafka上でリアルタイムデータエンジニアリング、分析、機械学習を行うPythonフレームワーク。
  • River Python - Python向けオンライン機械学習ライブラリ。
  • samza-luwak Archived Java - Apache SamzaとLuwakのストレージクエリエンジンを統合し、全文ストリーム検索を実現するもの。
  • Scramjet C++ Archived C++ - C++向けの反応型ストリームプログラミングフレームワーク。
  • Scramjet Python Archived Python - Python向けの反応型ストリームプログラミングフレームワーク。
  • Scramjet TypeScript Archived TypeScript - 非同期JavaScriptおよびTypeScriptアプリケーション向けの反応型ストリームプログラミングフレームワーク。
  • StormCV Archived Java - Apache Storm向けのコンピュータビジョン操作およびデータモデル。
  • Stream Ops Archived Java - Java向けの埋め込み型データストリーミングエンジンおよびストリーム処理API。
  • streamDM Archived Scala - Huaweiが開発した、Spark Streamingを用いたデータストリームの分析用ライブラリ。
  • Streamiz.Kafka.Net C# - Apache Kafka向けの.NETストリーム処理ライブラリ。
  • Streamparse Archived Python - Apache Storm向けのPython API、コマンドラインツール、およびトポロジDSL。
  • Streamz Python - 分岐、結合、フロー制御、バックプレスの機能を備えた継続的なデータパイプラインの構築用ライブラリ。
  • Summingbird Archived Scala - StormおよびScalding上でストリームMapReduce計算を表現するための廃止されたライブラリ。
  • Swave Archived Scala - Scala向けの軽量な反応型ストリームインフラストラクチャツールキット。
  • Tributary Python - 同期、反応型、遅延評価型データフロー図の構築用Pythonライブラリ。
  • trident-ml Archived Java - Apache Storm Tridentに基づくオンライン機械学習ライブラリ。
  • WindFlow C++ - 多コアCPUおよびGPU向けのデータストリーム処理並列ライブラリ。
  • Yurita Archived Scala - PayPalがSpark Structured Streamingをベースに開発した異常検知フレームワーク。

データ統合とパイプライン

  • Apache Flume Java - 大量のログのようなデータを収集・集計・移動するための分散サービス。
  • Brooklin Java - ハイブリッドシステム間でスケール可能な信頼性の高い近接データストリーミングを実現する分散システム。
  • Bruin Go - イングレス、SQLおよびPython変換、データ品質チェックを統合した端到端データパイプラインツール。
  • Camus Archived Java - LinkedInが廃止した、従来のKafka-to-HDFSパイプライン。
  • CocoIndex Rust/Python - AIおよびエージェントワークロードが継続的に更新される場合のインクリメンタルデータ変換エンジン。
  • Databus Archived Java - LinkedInのソースに依存しない分散変更データキャプチャシステム。
  • faucet-stream Rust - ETL、CDC、およびストリーミングデータ移動向けの構成駆動型プラットフォームおよび埋め込みライブラリ
  • inGestr Go/Python - データベース、SaaSアプリケーション、データウェアハウス間のデータコピー用のコマンドラインアプリケーションおよびPython SDK
  • Pathway Python/Rust - ストリーミング処理、リアルタイム分析、AIデータパイプライン向けのPython ETLフレームワーク
  • Redpanda Connect Go - ソースとシンク間のデータを移動・豊富化・変換・フィルタリングするための宣言型ストリームプロセッサ
  • RudderStack Go - イベントストリーミングおよびクラウドからウェアハウスへのデータパイプライン向けの開発者中心の顧客データプラットフォーム
  • Suro Archived Java - Netflixのデータパイプラインでアプリケーションイベントを収集・集計・配信
  • yasdb Go - SlateDBオブジェクトストレージをバックエンドにした持続可能なストリームプロトコルサーバーで、オフセットベースのキャッチアップ読み取りとSSEまたはロングポールテールインをサポート

アプリケーションとツール

  • beava Rust/Python - メッセージブローカーなしで、個体ごとのカウンタと集計をクエリするためのシングルバイナリの機能サーバー
  • Eventum Python/TypeScript - シンセティックイベントストリームを生成するためのデータ生成プラットフォーム
  • javactrl-kafka Java - コードファーストの分散ワークフローエンジンでマイクロサービスのオーケストレーションおよびビジネスプロセス自動化を実現
  • Nussknacker Scala - 実時間決定アルゴリズムの定義と実行を行うための視覚ツール
  • straw Archived Python/Java - 実時間ストリーミング検索向けのプラットフォーム
  • StreamAlert Archived Python - Airbnbのサーバレスフレームワークでリアルタイムセキュリティログの分析およびアラートを実行
  • Streamdal Archived TypeScript - アプリケーションデータフロー内のPIIを検出するためのコードネイティブなデータプライバシーコントロール
  • StreamFlow Archived Java - ストリーム処理ワークフローの構築と監視を行うためのツール
  • StreamingBandit Python - コンテクスト付きマルチアームバンディング実験の設定と評価を行うためのウェブアプリケーション
  • Streamline Archived Java - Apache Stormなどのエンジンを基盤としたHortonworksの視覚的なストリーム分析フレームワーク
  • Substation Go - セキュリティイベントと監査ログのルーティング、正規化、情報付加を行うツールキット。
  • Turbine Archived Java - NetflixがServer-Sent Event JSONストリームを集計するためのツール
  • Zilla Java - アプリケーション、API、エージェント、デバイスをイベントストリームに接続するためのマルチプロトコルゲートウェイ

マネージド/クローズドソース

  • Amazon Kinesis Data Streams - AWS上でリアルタイムデータストリームのイングレスと処理を行うための完全に管理されたサービス。
  • Azure Stream Analytics SQL - クラウドおよびエッジでサーバーレスリアルタイム分析を提供する完全に管理されたサービス。
  • Concord Archived C++ - Apache Mesosに基づいた歴史的な分散ストリーム処理フレームワーク。
  • Google Cloud Dataflow Java/Python/Go - Apache Beamのバッチおよびストリーミングパイプラインを実行するための完全に管理されたサービス。
  • IBM Streams Archived Python/Java/Scala - 分散ストリーム処理およびリアルタイム分析用の廃止された専有プラットフォーム。
  • NVIDIA DeepStream SDK C/C++/Python - GStreamerに基づくツールキットで、オープンソースコンポーネントとNVIDIAの専有ライブラリを用いてリアルタイムAIストリーミング分析およびマルチセンサ処理を行う。

ベンチマーク

  • Flotilla Archived Go - スケーラブルなベンチマークにおけるメッセージキューのオーケストレーションを自動化するサービス。
  • storm-perf-test Archived Java - Apache Stormのパフォーマンスおよびストレステスト。
  • streaming-benchmarks Archived Java - ローレイテンシストリーム処理システム(Storm、Spark、Flinkを含む)のベンチマーク。

読み物

  1. In-Stream Big Data Processing
  2. The world beyond batch: Streaming 101 - Tyler Akidau著。
  3. Real Time Analytics: Algorithms and Systems (VLDB 2015)
  4. Grokking Streaming Systems - Josh Fischer、Ning Wang著。
  5. Streaming Systems: The What, Where, When, and How of Large-Scale Data Processing - Reuven Lax、Slava Chernyak、Tyler Akidau著。
  6. Data Pipelines with Apache Airflow - Bas P. Harenslak、Julian Rutger de Ruiter著。
  7. MillWheel: Fault-Tolerant Stream Processing at Internet Scale

ライセンス

Creative Commons License

Creative Commons Attribution-ShareAlike 4.0 International License の下で提供されています。