Dynamic Configuration of a Relocatable Driver and Code Generator for Continuous Deep Analytics

Modern stream processing engines usually use the Java virtual machine (JVM) as execution platform. The JVM increases portability and safety of applications at the cost of not fully utilising the performance of the physical machines. Being able to use hardware accelerators such as GPUs for computatio...

Full description

Bibliographic Details
Main Author: Bjuhr, Oscar
Format: Others
Language:English
Published: KTH, Skolan för elektroteknik och datavetenskap (EECS) 2018
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-232079
id ndltd-UPSALLA1-oai-DiVA.org-kth-232079
record_format oai_dc
collection NDLTD
language English
format Others
sources NDLTD
topic Stream Processing
Heterogeneous Cluster
Big Data
Rust
Cargo
Docker
Ström Processor
Heterogent Kluster
Big Data
Rust
Cargo
Docker
Computer and Information Sciences
Data- och informationsvetenskap
spellingShingle Stream Processing
Heterogeneous Cluster
Big Data
Rust
Cargo
Docker
Ström Processor
Heterogent Kluster
Big Data
Rust
Cargo
Docker
Computer and Information Sciences
Data- och informationsvetenskap
Bjuhr, Oscar
Dynamic Configuration of a Relocatable Driver and Code Generator for Continuous Deep Analytics
description Modern stream processing engines usually use the Java virtual machine (JVM) as execution platform. The JVM increases portability and safety of applications at the cost of not fully utilising the performance of the physical machines. Being able to use hardware accelerators such as GPUs for computationally heavy analysis of data streams is also restricted when using the JVM. The project Continuous Deep Analytics (CDA) explores the possibility of a stream processor executing native code directly on the underlying hardware using Rust. Rust is a young programming language which can statically guarantee the absence of memory errors and data races in programs without incurring performance penalties during runtime. Rust is built on top of LLVM which gives Rust a theoretical possibility to compile to a large set of target platforms. Each specific target platform does however require a specific configured runtime environment for Rust’s compiler to work properly. The CDA compiler will run in a distributed setting where the compiler has to be able to reallocate to different nodes to handle node failures. Setting up a reassignable Rust compiler in such a setting can be error prone and Docker is explored as a solution to this problem. A concurrent thread based system is implemented in Scala for building Docker images and compiling Rust in containers. Docker shows a potential of enabling easy reallocation of the driver without manual configuration. Docker has no major effect on Rust’s compile time. The large Docker images required to compile Rust is a drawback of the solution. They will require substantial network traffic to reallocate the driver. Reducing the size of the images would therefore make the solution more responsive. === Moderna strömprocessorer använder vanligtvis Javas virtuella maskin (JVM) som plattform för exekvering. Det gör strömprocessorerna portabla och säkra men begränsar hur väl de kan använda kapaciteten i den underliggande fysiska maskinen. Att kunna använda sig av hårdvaruaccelerator som t.ex. grafikkort för tung beräkning och analys av dataströmmar är en anledning till varför projektet Continuous Deep Analytics (CDA) utforskar möjligheten att istället exekvera en strömprocessor direkt i den underliggande maskinen. Rust är ett ungt programmeringsspråk som statiskt kan garantera att program inte innehåller minnesfel eller race conditions", detta utan att negativt påverka prestanda vid exekvering. Rust är byggt på LLVM vilket ger Rust en teoretisk möjlighet att kompilera till en stor mängd olika maskinarkitekturer. Varje specifik maskinarkitektur kräver dock att kompileringsmiljön är konfigurerad på ett specifikt sätt. CDAs kompilator kommer befinna sig i ett distribuerat system där kompilatorn kan bli flyttad till olika maskiner för att kunna hantera maskinfel. Att dynamiskt konfigurera kompilatorn i en sådan miljö kan leda till problem och därför testas Docker som en lösning på problemet. Ett trådbaserat system för parallell exekvering är implementerat i Scala för att bygga Docker bilder och kompilera Rust i containrar. Docker visar sig att ha en potential för att möjliggöra lätt omallokering av drivern utan manuell konfiguration. Docker har ingen stor påverkan på Rusts kompileringstid. De stora storlekarna på de Docker bilder som krävs för att kompilera Rust är en nackdel med lösningen. De gör att om allokering av drivern kräver mycket nätverkstrafik och kan därför ta lång tid. För att göra lösningen kvickare kan storleken av bilderna reduceras.
author Bjuhr, Oscar
author_facet Bjuhr, Oscar
author_sort Bjuhr, Oscar
title Dynamic Configuration of a Relocatable Driver and Code Generator for Continuous Deep Analytics
title_short Dynamic Configuration of a Relocatable Driver and Code Generator for Continuous Deep Analytics
title_full Dynamic Configuration of a Relocatable Driver and Code Generator for Continuous Deep Analytics
title_fullStr Dynamic Configuration of a Relocatable Driver and Code Generator for Continuous Deep Analytics
title_full_unstemmed Dynamic Configuration of a Relocatable Driver and Code Generator for Continuous Deep Analytics
title_sort dynamic configuration of a relocatable driver and code generator for continuous deep analytics
publisher KTH, Skolan för elektroteknik och datavetenskap (EECS)
publishDate 2018
url http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-232079
work_keys_str_mv AT bjuhroscar dynamicconfigurationofarelocatabledriverandcodegeneratorforcontinuousdeepanalytics
AT bjuhroscar dynamiskkonfigureringavenomlokaliseringsbardriverochkodgenererareforcontinuousdeepanalytics
_version_ 1718711788381405184
spelling ndltd-UPSALLA1-oai-DiVA.org-kth-2320792018-07-11T05:25:24ZDynamic Configuration of a Relocatable Driver and Code Generator for Continuous Deep AnalyticsengDynamisk Konfigurering av en Omlokaliseringsbar Driver och Kod Genererare för Continuous Deep AnalyticsBjuhr, OscarKTH, Skolan för elektroteknik och datavetenskap (EECS)2018Stream ProcessingHeterogeneous ClusterBig DataRustCargoDockerStröm ProcessorHeterogent KlusterBig DataRustCargoDockerComputer and Information SciencesData- och informationsvetenskapModern stream processing engines usually use the Java virtual machine (JVM) as execution platform. The JVM increases portability and safety of applications at the cost of not fully utilising the performance of the physical machines. Being able to use hardware accelerators such as GPUs for computationally heavy analysis of data streams is also restricted when using the JVM. The project Continuous Deep Analytics (CDA) explores the possibility of a stream processor executing native code directly on the underlying hardware using Rust. Rust is a young programming language which can statically guarantee the absence of memory errors and data races in programs without incurring performance penalties during runtime. Rust is built on top of LLVM which gives Rust a theoretical possibility to compile to a large set of target platforms. Each specific target platform does however require a specific configured runtime environment for Rust’s compiler to work properly. The CDA compiler will run in a distributed setting where the compiler has to be able to reallocate to different nodes to handle node failures. Setting up a reassignable Rust compiler in such a setting can be error prone and Docker is explored as a solution to this problem. A concurrent thread based system is implemented in Scala for building Docker images and compiling Rust in containers. Docker shows a potential of enabling easy reallocation of the driver without manual configuration. Docker has no major effect on Rust’s compile time. The large Docker images required to compile Rust is a drawback of the solution. They will require substantial network traffic to reallocate the driver. Reducing the size of the images would therefore make the solution more responsive. Moderna strömprocessorer använder vanligtvis Javas virtuella maskin (JVM) som plattform för exekvering. Det gör strömprocessorerna portabla och säkra men begränsar hur väl de kan använda kapaciteten i den underliggande fysiska maskinen. Att kunna använda sig av hårdvaruaccelerator som t.ex. grafikkort för tung beräkning och analys av dataströmmar är en anledning till varför projektet Continuous Deep Analytics (CDA) utforskar möjligheten att istället exekvera en strömprocessor direkt i den underliggande maskinen. Rust är ett ungt programmeringsspråk som statiskt kan garantera att program inte innehåller minnesfel eller race conditions", detta utan att negativt påverka prestanda vid exekvering. Rust är byggt på LLVM vilket ger Rust en teoretisk möjlighet att kompilera till en stor mängd olika maskinarkitekturer. Varje specifik maskinarkitektur kräver dock att kompileringsmiljön är konfigurerad på ett specifikt sätt. CDAs kompilator kommer befinna sig i ett distribuerat system där kompilatorn kan bli flyttad till olika maskiner för att kunna hantera maskinfel. Att dynamiskt konfigurera kompilatorn i en sådan miljö kan leda till problem och därför testas Docker som en lösning på problemet. Ett trådbaserat system för parallell exekvering är implementerat i Scala för att bygga Docker bilder och kompilera Rust i containrar. Docker visar sig att ha en potential för att möjliggöra lätt omallokering av drivern utan manuell konfiguration. Docker har ingen stor påverkan på Rusts kompileringstid. De stora storlekarna på de Docker bilder som krävs för att kompilera Rust är en nackdel med lösningen. De gör att om allokering av drivern kräver mycket nätverkstrafik och kan därför ta lång tid. För att göra lösningen kvickare kan storleken av bilderna reduceras. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-232079TRITA-EECS-EX ; 2018:168application/pdfinfo:eu-repo/semantics/openAccess