Renoir
REactive Network of Operators In Rust
Renoir (short: Noir) [/ʁənwaʁ/, /nwaʁ/] is a distributed data processing platform based on the dataflow paradigm that provides an ergonomic programming interface, similar to that of Apache Flink, but has much better performance characteristics.
Renoir converts each job into a dataflow graph of operators and groups them in blocks. Blocks contain a sequence of operors which process the data sequentially without repartitioning it. They are the deployment unit used by the system and can be distributed and executed on multiple systems.
The common layout of a Renoir program starts with the creation of a StreamContext, then one or more Sources are initialised creating a Stream. The graph of operators is composed using the methods of the Stream object, which follow a similar approach to Rust's Iterator trait allowing ergonomically define a processing workflow through method chaining.
Examples
Wordcount
use *;
// Execute on 6 local hosts `cargo run -- -l 6 input.txt`
Wordcount associative (faster)
use *;
// Execute on multiple hosts `cargo run -- -r config.toml input.txt`
Remote deployment
# config.toml
[[]]
= "host1.lan"
= 9500
= 16
[[]]
= "host2.lan"
= 9500
= 24
= { = "renoir", = "/home/renoir/.ssh/id_ed25519" }
Refer to the examples directory for an extended set of working examples