scieee Science in your language
[en] (orig)
Hardware-conscious Techniques for
Efficient and Reliable Stateful
Stream Processing
vorgelegt von
M. Sc.
Bonaventura Del Monte
an der Fakultät IV - Elektrotechnik und Informatik
der Technischen Universität Berlin
zur Erlangung des akademischen Grades
Doktor der Ingenieurwissenschaften
- Dr.-Ing. -
genehmigte Dissertation
Promotionsausschuss:
Vorsitzender: Prof. Dr. Stefan Schmid
Gutachter: Prof. Dr. Volker Markl
Gutachter: Prof. Peter Pietzuch, Ph.D.
Gutachter: Prof. Matei Zaharia, Ph.D.
Gutachter: Prof. Dr. Tilmann Rabl
Tag der wissenschaftlichen Aussprache: 5. Dezember 2022
Berlin 2023
Zusammenfassung
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 Datenflussverarbeitungssyste-
me kontinuierlich Map/Reduce-ähnliche Pipelines auf kontinuierlichen Daten aus und wenden
datenzentrische Parallelität zur Skalierung auf einem Server-Cluster an. Aktuelle Datenfluss-
verarbeitungssysteme 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 Netz-
werkfunktionen, 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, Hochgeschwin-
digkeitsnetzwerkkommunikation 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 Datenflussverarbeitungs-
systeme, 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
Advertisement
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 Datenflussverar-
beitungssysteme, 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 Ad-
hoc- 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.
iv
Abstract
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. To this end, we propose Slash, a
Advertisement
Loading more pages...