Loading…
Thumbnail Image

Hardware-conscious techniques for efficient and reliable stateful stream processing

Del Monte, Bonaventura

FG Datenbanksysteme und Informationsmanagement (DIMA)

Over the past two decades, distributed stream processing engines (SPEs) have become a prominent component in the big data management tool-chain to support real-time, stateful data analytics applications on high-volume, high-velocity data streams in cloud deployments. To this end, current SPEs continuously execute Map/Reduce-like pipelines on continuous data and apply data-centric parallelism to scale-out on a cluster of servers.Current SPEs assume so-called commodity hardware as they follow Map/Reduce-like paradigms based on the shared-nothing architecture. Furthermore, SPEs are agnostic to hardware configuration as they rely on managed runtimes, such as a Java Virtual Machine. However, computing infrastructures have improved dramatically their hardware characteristics in the past years. As a result, the common wisdom that cloud providers mainly offer commodity hardware no longer holds. For instance, cloud platform vendors provide powerful compute and network capabilities as they offer servers with high-end CPUs with many cores and large caches as well as high-speed networks, such as Infiniband with Remote Direct Memory Access (RDMA) support. Furthermore, modern hardware infrastructure is highly flexible, as it provides ad-hoc provisioning of resources, which enables scaling the compute and storage capabilities as well as coping with failures, while a deployed application is executed. In this thesis, we show that the current generation of SPEs are hardware-agnostic and cannot leverage the above technology advancements. In fact, we experimentally demonstrate that they perform inefficiently when running on an infrastructure that provides HPC-grade CPUs, high-speed networks, as well as ad-hoc, flexible resource provisioning. To this end, we present solutions to efficiently execute stateful stream processing applications on the modern hardware infrastructure. First, we focus on the scale-up performance of current SPEs to leverage the compute capabilities of the modern hardware. Our analysis shows that SPEs suffer from inefficient memory access patterns that lead to sub-optimal code and data locality. Driven by our analysis, we provide design changes, such as specialized code generation, to the common architecture of an SPE to scale-up on modern hardware. We show that an SPE that follows our guidelines achieves up to two orders of magnitude higher single-node throughput compared to state-of-the-art SPEs. Second, we focus on the scale-out performance of the current SPEs to leverage the high-speed networks with RDMA support. In particular, RDMA hardware has invalidated the common assumption that network is often a bottleneck in distributed data processing systems. However, high-speed networks do not provide "plug-and-play" performance (e.g., using IP-over-InfiniBand) and require a careful co-design of system and application logic. Furthermore, the introduction of RDMA-based data structures in an SPE is challenged by real-time constraints and state consistency guarantees. To this end, we propose Slash, a novel stream processing engine that uses high-speed networks and RDMA to efficiently execute distributed streaming computations. Slash embraces a processing model suited for RDMA acceleration and omits expensive data pre-partitioning, which is the current approach of state-of-the-art SPE to distributed query execution. Overall, our solution achieves a throughput improvement up to two orders of magnitude over existing systems deployed on an InfiniBand network and it is up to a factor of 22 faster than a self-developed solution that relies on RDMA-based data pre-partitioning to scale out query processing. Finally, we focus on the runtime reconfiguration of running streaming applications of the current generation of SPEs to leverage the ad-hoc and flexible provisioning capabilities of the modern cloud computing infrastructure. SPEs need to transparently reconfigure stateful queries during runtime to recover from outages, adjust to varying data rates, and ensure low-latency processing, which are required by industrial setups. However, state-of-the-art SPEs are not ready yet to handle on-the-fly reconfiguration of queries with terabytes of state due to three problems: network overhead for state migration, consistency, and overhead on data processing. We propose Rhino, a library for efficient reconfiguration of running queries in the presence of distributed state of arbitrary size.Overall, our evaluation shows that Rhino scales with state sizes of up to terabytes, reconfigures a running query 15 times faster than the state-of-the-art solutions, and reduces latency by three orders of magnitude upon a reconfiguration. In sum, the thesis lays the foundation for efficient and reliable stateful stream processing via a hardware-conscious system design that can be applied to existing and future SPEs. Through our novel system design, the software prototypes proposed in this work achieve superior performance compared to state-of-the-art SPEs on common stream processing workloads.
In den letzten zwei Jahrzehnten wurden verteilte Datenflussverarbeitungssysteme zu einer wichtigen Komponente in dem Big-Data-Verwaltungs-Toolkit, um zustandsabhängige Echtzeit- Datenanalyseanwendungen für hochvolumige Datenströme mit hoher Geschwindigkeit in Cloud- Bereitstellungen zu unterstützen. Zu diesem Zweck führen aktuelle Datenflussverarbeitungssysteme kontinuierlich Map/Reduce-ähnliche Pipelines auf kontinuierlichen Daten aus und wenden datenzentrische Parallelität zur Skalierung auf einem Server-Cluster an. Aktuelle Datenflussverarbeitungssysteme setzen sogenannte Commodity-Hardware voraus, da sie Map/Reduceähnlichen Paradigmen folgen, die auf der Shared-Nothing-Architektur basieren. Darüber hinaus sind Datenflussverarbeitungssysteme unabhängig von der Hardwarekonfiguration, da sie sich auf verwaltete Laufzeiten, wie z. B. eine Java Virtual Machine, stützen. Moderne Hardware-Infrastrukturen haben sich jedoch in den letzten Jahren dramatisch verbessert. Daher ist die gängige Meinung, dass Cloud-Anbieter hauptsächlich Standard-Hardware anbieten, nicht mehr gültig. So bieten die Anbieter von Cloud-Plattformen leistungsstarke Rechen- und Netzwerkfunktionen, da sie Server mit High-End-CPUs mit vielen Kernen und großen Caches sowie Hochgeschwindigkeitsnetzwerke wie Infiniband mit RDMA-Unterstützung (Remote Direct Memory Access) anbieten. Darüber hinaus sind moderne verteilte Recheninfrastrukturen äußerst flexibel, da sie eine Ad-hoc-Bereitstellung von Ressourcen ermöglichen, die eine Skalierung der Rechen- und Speicherkapazitäten sowie die Behandlung von Ausfällen ermöglichen, während eine Anwendung ausgeführt wird. In dieser Arbeit zeigen wir, dass die aktuelle Generation von Datenflussverarbeitungssysteme hardware-agnostisch ist und die oben genannten technologischen Fortschritte nicht nutzen kann. Wir zeigen experimentell, dass diese ineffizient arbeiten, wenn sie auf einer Infrastruktur ausgeführt werden, die CPUs auf dem Leistungsniveau für HPC-Anwendungen, Hochgeschwindigkeitsnetzwerkkommunikation sowie eine flexible Ad-hoc-Ressourcenbereitstellung bietet. Zu diesem Zweck stellen wir Lösungen zur effizienten Ausführung von zustandsabhängigen Stream-Processing-Anwendungen auf einer modernen Recheninfrastrukturen vor. Zunächst konzentrieren wir uns auf die Skalierungsleistung aktueller Datenflussverarbeitungssysteme, um die Rechenkapazitäten der modernen Hardware zu nutzen. Unsere Analyse zeigt, dass Datenflussverarbeitungssysteme unter ineffizienten Speicherzugriffsmustern leiden, die zu einer suboptimalen Code- und Datenlokalität führen. Auf der Grundlage unserer Analyse schalgen wir Designänderungen, wie z. B. eine spezialisierte Codegenerierung, vor um die allgemeinen Architektur dahingehend zu ändern das ein SPE eine Skalierung auf moderner Hardware ermöglicht. Zweitens konzentrieren wir uns auf die Scale-out-Leistung der aktuellen Datenflussverarbeitungssysteme, um die Hochgeschwindigkeitsnetzwerke mit RDMA-Unterstützung zu nutzen. Insbesondere die RDMA-Hardware hat die gängige Annahme entkräftet, dass das Netzwerk in verteilten Datenverarbeitungssystemen oft ein Engpass ist. Hochgeschwindigkeitsnetze bieten jedoch keine Plug-and-PlayLeistung (z. B. bei der Verwendung von IP-over-InfiniBand) und erfordern eine sorgfältige gemeinsame Entwicklung von System- und Anwendungslogik. Insgesamt erreicht unsere Lösung eine Durchsatzverbesserung um bis zu zwei Größenordnungen gegenüber bestehenden Systemen, die in einem InfiniBand-Netzwerk eingesetzt werden, und sie ist bis zu einem Faktor von 22 schneller als eine selbst entwickelte Lösung, die auf RDMA-basierter Datenvorpartitionierung zur Skalierung der Abfrageverarbeitung beruht. Abschließend konzentrieren wir uns auf die Laufzeit-Rekonfiguration laufender Streaming-Anwendungen der aktuellen Generation von Datenstromverarbeitungssystemen, um die Adhoc- und flexiblen Bereitstellungsmöglichkeiten der modernen Cloud-Computing-Infrastruktur zu nutzen. Datenflussverarbeitungssysteme müssen zustandsbehaftete Abfragen während der Laufzeit rekonfigurieren, um sich von Ausfällen zu erholen, sich an schwankende Datenraten anzupassen und eine Verarbeitung mit geringer Latenz zu gewährleisten, was in industriellen Umgebungen erforderlich ist. Modernste Datenflussverarbeitungssysteme sind jedoch noch nicht in der Lage, Abfragen mit Terabytes an Zuständen während der Laufzeit zu rekonfigurieren, was auf drei Probleme zurückzuführen ist: Netzwerk-Overhead für Zustandsmigration, Konsistenz und Mehrkosten bei der Datenverarbeitung. Wir schlagen Rhino vor, ein System für die effiziente Rekonfiguration laufender Abfragen in Anwesenheit eines verteilten Zustands beliebiger Größe. Insgesamt zeigt unsere Untersuchung, dass Rhino mit Zustandsgrößen von bis zu mehreren Terabytes skaliert, eine laufende Abfrage 15-mal schneller rekonfiguriert als die modernsten Lösungen und die Latenz bei einer Rekonfiguration um drei Größenordnungen reduziert. Zusammenfassend lässt sich sagen, dass diese Arbeit die Grundlage für eine effiziente und zuverlässige zustandsbehaftete Stream-Verarbeitung durch ein hardwarebewusstes Systemdesign legt, das auf bestehende und zukünftige SPEs angewendet werden kann. Durch unser neuartiges Systemdesign erreichen unsere Software-Prototypen, die in dieser Arbeit vorgeschlagen wurden, eine überlegene Leistung im Vergleich zu modernen Datenstromverarbeitungssystemen bei gängigen Datenstromverarbeitungsaufgaben.