A Comprehensive Survey on Parallelization and Elasticity in Stream Processing 1 : 3 apply methods from control theory to adapt the parallelization degree of the operators

ion “stateful data-ow graphs” (SDG) that separates data from mutable operator state. In their model, state elements can be partitioned by a key and dispatching is performed by hashor range-partitioning on a key or by shue grouping. If a state element cannot be partitioned, it is replicated, and state updates are combined by a “merge logic”. Further, Fernandez et al. provide a tool “java2sdg” [43] that translates annotated Java programs to SDGs for execution in the SDG runtime system. Chronostream by Wu and Tan [147] splits the computational state (based on keys) into so-called slices. is state spliing supports horizontal and vertical scaling. e slices are distributed and replicated across dierent machines, leading to ecient load balancing and enabling fault tolerance. Wu et al. [146] extend IBMs System S and enable it to handle shared state in data parallel processing. ey implement a round-robin and a hash-based spliing routine. Special about their approach is a theoretical model. It analyzes if parallel processing improves the performance of an SP systems that employs shared state. e model predicts the waiting time and the time overhead that the shared state access induces. Approaches implementing Key-based Spliing. Schneider et al. [124] present a compiler and a runtime environment for their SP language SPL [65] (Stream Processing Language) that enables data parallelization. Based on hints provided in SPL, the complier denes parallel regions, which are sequences of multiple operators and automatically replicates them. e system supports stateful and stateless operators and splits the input stream of a parallel region based on keys or, if the operator is stateless, with Round-Robin shue grouping. Fusion of operators further reduces network communication. In a later publication [125], the authors add support for operators that produce a dynamic number of output data items per input data item. Gedik et al. [53] propose an approach for “pipelined ssion”, a combination of pipelining and keybased data parallelization. ey fuse groups of operators into so-called pipelines with a heuristic optimization algorithm. Dierent threads can then execute these pipelines independently to enable parallelism. Additionally, stateless or key-partitioning pipelines can be further parallelized by a split–process–merge architecture to exploit data parallelism. Neumeyer et al. [110] propose the highly scalable SP system S4. e system scales with Processing Engines (PE) where one PE is responsible for a specic key and processes all corresponding data items. A processing node (PN) manages multiple PEs, i.e., a subset of the key domain, and instantiates new PEs if a new key occurs that is not covered by an existing PE yet. Approaches implementing Window-based Spliing. Andrade et al. [6] present a low-latency SP implementation in IBM’s System S. is implementation splits the input stream of an operator on two levels: On the rst level key-based, on the second level, for each of the key ranges, window-based. us, it is for example possible to calculate an average over a time window, i.e. a window-based operation, for the stock value of dierent companies, i.e. on a key-based split input data stream. e authors name this paern the “split/aggregate/join” paern. e work of Mencagli et al. [105] propose a novel execution model, “agnostic worker” for multi-core shared memory environments. An agnostic worker parallelizes operators with window policies that require forward context (cf. Section 2.4). e splier does not only determine the window extents on the input stream, but also when a window computation is triggered (i.e., when the query function is called.). e actual computation of the window results, i.e., the execution of the query function, is then scheduled to one of the available operator instances. Approaches implementing Pane-based Spliing. Mencagli et al. [103, 104] split large panes into sub-panes with a proportional-integrative-derivative controller (PID) that automatically adjusts the spliing threshold. eir work focuses on burstiness in event arrival rates as to avoid bolenecks. ACM Computing Surveys, Vol. 1, No. 1, Article 1. Publication date: January 2016. 1:20 Henriee Röger and Ruben Mayer Balkesen et al. [13] parallelize sliding window processing on data streams with pane-based spliing. A ring-based pane-partitioning splits the input stream and assigns panes to processing nodes that are logically ordered in a ring. e ring structure eases ordered processing and reduces communication overhead. eir approach rst assigns windows to the ring-ordered nodes roundrobin. Each node then processes those panes that belong to its assigned windows. A pane result calculated on one node can then be easily forwarded to the next node where the next window this pane belongs to assigned. A merge node aggregates the pane-results whereby it allows for a constrained degree of disorder to balance eciency and output quality. Koliousis et al. propose SABER [78], an SP engine that manages query processing on heterogeneous hardware with CPU and GPU cores. A splier rst splits the incoming event streams into batches of a xed size and assigns them to a processing unit, i.e., a CPU core or a GPU processor. Each processing unit executes a “query task”, i.e., a function that takes n batches, one from each of the n incoming event streams and calculates a function on those n batches in parallel applying an n-ary operator function. SABER aims to keep the size of the batches independent from the window policy, i.e., from the window size and slide. To this end, the operator function is divided into a fragment operator function and an assembly operator function. e fragment operator function denes the processing of a sequence of window fragments and produces window fragment results. e assembly operator function constructs the complete window result by combining the window fragment results. is way, dierent from classical pane-based spliing, the size of the processed batches is independent of the window slide.