Streaming

Awesome Streaming Awesome Build Status

精选的超赞清单 streaming (stream processing) 框架,应用程序,阅读材料和其他资源. 受启发 other awesome projects.

Website

https://manuzhang.github.io/awesome-streaming/ 是一个更具活力的网站,您可以在此处找到真棒项目的更新**.

Streaming Engine

  • Apache Apex [Java]-大数据流和批处理的统一平台.
  • Apache Flink [Java]-用于高吞吐量,低延迟数据流处理的系统,支持状态计算,数据驱动的窗口语义和迭代流处理.
  • Apache Heron (incubating) [Java]-来自Twitter的实时,分布式,容错流处理引擎.
  • Apache Samza [Scala / Java]-基于Kafka(消息,存储)和YARN(容错,处理器隔离,安全性和资源管理)构建的分布式流处理框架.
  • Apache Spark Streaming [Scala]-使构建可扩展的容错流应用程序变得容易.
  • Apache Storm [Clojure / Java]-分布式实时计算系统. Storm是流处理,而Hadoop是批处理.
  • AthenaX [Java]-生产中使用的Uber流分析框架
  • Faust [Python]-流处理库,将想法从Kafka Streams移植到Python
  • Gearpump [Scala]-基于Akka构建的轻量级实时分布式流引擎.
  • Hazelcast Jet [Java]-基于Hazelcast构建的通用分布式数据处理引擎.
  • hailstorm [Haskell]-基于Storm的具有精确一次语义的分布式流处理.
  • mantis [Java]-Netflix建立实时流处理应用程序生态系统的平台
  • mupd8(muppet) [Scala / Java]-用于处理快速/流数据的mapReduce样式的框架.
  • Onyx [Clojure]-分布式,无主控,高性能,容错数据处理.
  • s4 [Java]-通用的,分布式的,可伸缩的,容错的,可插拔的平台,允许程序员轻松开发用于处理连续无限制数据流的应用程序.
  • SABER [Java / C]-基于窗口的混合CPU / GPU流处理引擎.
  • SPQR [Java]-用于通过管道处理大量数据流的动态框架.
  • tigon [C ++ / Java]-基于Hadoop和HBase构建的高吞吐量实时流处理框架.
  • Teknek [Java]-具有交互式原型外壳SOL(流操作员语言)的简单优雅的流处理 Mesos专为需要灵活性和控制力的高性能数据处理作业而设计.
  • Trill [.NET/C#] - Trill is a high-performance one-pass in-memory streaming analytics engine from Microsoft Research.
  • Wallaroo [Python]-一种快速的流处理框架. Wallaroo使实时响应数据变得容易. 通过消除基础架构的复杂性,从原型到生产的过程从未如此简单.

Streaming Library

  • Apache Kafka Streams [Java]-Apache Kafka中的轻量级流处理库(从0.10版本开始).
  • Akka Streams [Scala]-Akka Actors上的流处理库.
  • Benthos [开始]-Benthos是一种高性能且具有弹性的消息流服务,能够连接各种源和接收器,并对有效负载执行任意操作,转换和过滤器
  • FS2(prev. 'Scalaz-Stream') [Scala]-Scala的组合式流I / O库.
  • monix [Scala]-高性能的Scala / Scala.js库,用于编写异步和基于事件的程序.
  • Streamline [Java]-Hortonworks的Stream Analytics Framework,旨在作为现有流解决方案(如Storm)的包装. 旨在允许用户拖放流组件以专注于业务逻辑.
  • StreamAlert [Python]-Airbnb的实时数据分析和警报.
  • Swave [Scala]-用于Scala的轻量级Reactive Streams基础结构工具包.
  • Streamz [Python]-轻量级的库,用于构建管道以管理连续的数据流; 支持涉及分支,连接,流量控制,反馈,背压等的复杂管道.
  • Stream Ops [Java]-Java的完全可嵌入的数据流引擎和流处理API.

Streaming Application

  • straw [Python / Java]-实时流搜索的平台.
  • storm-crawler [Java]-基于Apache Storm的Web爬虫SDK.

IoT

  • sensorbee [Go] - lightweight stream processing engine for IoT.
  • Apache Edgent [Java]-一种编程模型和运行时,可在网关和边缘设备上进行连续的流分析,可以与集中式系统一起使用,以在整个IoT生态系统中提供高效,及时的分析:从中心到边缘,由IBM开源.
  • Apache StreamPipes [Java]-自助(工业)IoT工具箱,使非技术用户可以连接,分析和探索IoT数据流.

DSL

  • Apache Beam [Java,Python,SQL,Scala,Go]-用于定义和执行数据处理工作流以及数据摄取和集成流程的统一模型和特定于语言的SDK集,支持企业集成模式(EIP)和领域特定语言(DSL) ),由Google开源.
  • coast [Scala]-DSL,它在Samza之上构建DAG,并提供一次精确的语义.
  • Esper [Java]-用于复杂事件处理(CEP)和事件序列分析的组件.
  • Streamparse [Python]-使您可以通过Apache Storm针对实时数据流运行Python代码.
  • summingbird [Scala]-一种库,可让您编写看起来像本机Scala或Java集合转换的MapReduce程序,并在许多著名的分布式MapReduce平台(包括Storm和Scalding)上执行它们.

Data Pipeline

  • Apache Kafka [Scala / Java]-分布式,分区,复制的提交日志服务,它提供消息传递系统的功能,但具有独特的设计.
  • Apache Pulsar [Java]-具有非常灵活的消息传递模型和直观的客户端API的分布式pub-sub消息传递平台.
  • brooklin [Java]-一种分布式系统,旨在通过Linkedin(替代数据总线)实现大规模可靠性和高吞吐量的各种异构源系统和目标系统之间的数据流.
  • camus [Java]-Linkedin的Kafka-> HDFS管道.
  • databus [Java]-Linkedin的与源无关的分布式更改数据捕获系统.
  • flume [Java]-分布式,可靠且可用的服务,用于有效地收集,聚集和移动大量日志数据.
  • LogDevice [C ++]-Facebook的高性能分布式系统,用于使用日志结构流式传输和存储顺序数据.
  • metaq [Java]-淘宝的高可用性,高性能分布式消息传递系统
  • NATS streaming [开始]-快速的磁盘支持消息传递解决方案
  • nsq [运行]-实时分布式消息传递平台,旨在大规模运行,每天处理数十亿条消息.
  • suro [Java]-数据管道服务,用于收集,聚集和调度包括日志数据在内的大量应用程序事件.
  • StreamSets Data Collector [Java]-连续的大数据摄取基础结构,可从大量端点进行读写,包括S3,JDBC,Hadoop,Kafka,Cassandra等.

Online Machine Learning

  • Apache Samoa [Java]-分布式流机器学习(ML)框架,其中包含针对分布式流ML算法的编程抽象.
  • DataSketches [Java]-Yahoo!的草图库.
  • streamDM [Scala]-使用华为的Spark Streaming挖掘大数据流.
  • StreamingBandit [Python]-提供一个网络服务器,以快速设置和评估针对上下文多臂强盗(cMAB)问题的可能解决方案.
  • StormCV [Java]-通过添加特定于计算机视觉(CV)的操作和数据模型来将Apache Storm用于视频处理.
  • trident-ml [Java]-基于Trident的实时在线机器学习库.
  • yurita [Scala]-基于Paypal的Spark结构化流构建的异常检测框架.

Streaming SQL

  • pipelinedb [C]-一种开源关系数据库,它在流上连续运行SQL查询,并将结果增量存储在表中.
  • squall [Java]-Squall在Storm之上执行SQL查询以进行在线处理.
  • StreamCQL [Java]-实时计算系统上的连续查询语言.
  • KSQL [Java]-用于Apache Kafka的流SQL引擎.

Benchmark

  • storm-benchmark [Java]-一组测试Storm性能的基准.
  • storm-perf-test [Java]-一个简单的风暴性能/压力测试.
  • streaming-benchmarks [Java]-低延迟(流)解决方案的基准,包括Apache Storm,Apache Spark,Apache Flink等.
  • flotilla [执行]-自动化的消息队列编排,以扩大基准测试.

Toolkit

  • akka [Scala]-用于在JVM上构建高度并发,分布式和弹性消息驱动的应用程序的工具箱和运行时.
  • pulsar [Python]-基于Actor的事件驱动的Python并发框架.
  • aeron [Java / C ++]-高效可靠的单播和多播消息传输.
  • StreamFlow [Java]-流处理工具,旨在帮助构建和监视处理工作流程.
  • samza-luwak [Java]-使用Luwak(一种基于Lucene构建的存储查询引擎)在流上实现全文搜索.
  • Turbine [Java]-用于将服务器发送事件(SSE)JSON数据流聚合到单个流中的工具.

Closed Source

  • Amazon Kinesis Streams [Java]-AWS提供的实时,完全托管和可扩展的数据流引擎.
  • Azure Stream Analytics [.NET]由Microsoft Azure提供的可大规模扩展,完全托管的实时数据流引擎.
  • Cloud Dataflow [Java,Python,SQL,Scala]-Google的托管流和批处理数据处理引擎. 支持正在运行的Beam管道.
  • concord [C ++]-在Apache之上以C ++构建的分布式流处理框架.
  • IBM Streams [Python / Java / Scala]-用于分布式处理和实时分析的平台. 提供了用于高级分析(如地理空间,时间序列等)的工具箱.
  • jubatus [C ++]-分布式处理框架和流机器学习库.
  • millwheel -用于构建低延迟数据处理应用程序的框架,该框架已在Google上广泛使用.

Readings

  1. In-Stream Big Data Processing
  2. The world beyond batch: Streaming 101 由泰勒·阿基道(Tyler Akidau)设计.
  3. Real Time Analytics: Algorithms and Systems (VLDB 2015)

License

Creative Commons License

根据许可 Creative Commons Attribution-ShareAlike 4.0 International License