Applications characterized by the continuous processing of large data streams have recently attracted the attention of the scientific community and industrial stakeholders. The need of high-level programming tools has led to the design of Data Stream Processing Systems (DSPSs) able to ease the development of streaming applications in distributed computing environments. Several systems of this kind have been released and currently maintained as open source projects, like Apache Storm and Spark Streaming. Although some benchmark applications are often used by the scientific community to test and evaluate new techniques to improve the performance and usability of DSPSs, the available benchmark suites are still lacking of representative workloads coming from the different areas of interest in the stream processing domain. The goal of this paper is to present a new benchmark suite composed of 15 applications coming from areas like Finance, Telecommunication, Sensor Networks, Social Networks and others. The paper describes in detail the nature of these applications, their full workload characterization in terms of selectivity, processing cost, input size and overall memory occupation, and provides a first assessment of the usefulness of our benchmark suite to compare real DSPSs by selecting Apache Storm and Spark Streaming for this analysis.
1 December 2021 in Future Generation Computer Systems
Summary: A recurrent challenge in real‐world applications is autonomous management of the executions at run‐time. In this vein, stream processing is a class of applications that compute data flowing in the form of streams (e.g., video feeds, images, and data analytics), where parallel computing can help accelerate the executions. On the one hand, stream processing applications are becoming more complex, dynamic, and long‐running. On the other hand, it is unfeasible for humans to monitor and manually change the executions continuously. Hence, self‐adaptation can reduce costs and human efforts by providing a higher‐level abstraction with an autonomic/seamless management of executions. In this work, we aim at providing a literature review regarding self‐adaptation applied to the parallel stream processing domain. We present a comprehensive revision using a systematic literature review method. Moreover, we propose a taxonomy to categorize and classify the existing self‐adaptive approaches. Finally, applying the taxonomy made it possible to characterize the state‐of‐the‐art, identify trends, and discuss open research challenges and future opportunities.
Benchmarking is a way to study the performance of new architectures and parallel programming frameworks. Well-established benchmark suites such as the NAS Parallel Benchmarks (NPB) comprise legacy codes that still lack portability to C++ language. As a consequence, a set of high-level and easy-to-use C++ parallel programming frameworks cannot be tested in NPB. Our goal is to describe a C++ porting of the NPB kernels and to analyze the performance achieved by different parallel implementations written using the Intel TBB, OpenMP and FastFlow frameworks for Multi-Cores. The experiments show an efficient code porting from Fortran to C++ and an efficient parallelization on average.