Exportação concluída — 

Fault tolerance for high-level parallel and distributed stream processing in C++

Detalhes bibliográficos
Ano de defesa: 2025
Autor(a) principal: Alf, Lucas Machado
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Pontifícia Universidade Católica do Rio Grande do Sul
Escola Politécnica
Brasil
PUCRS
Programa de Pós-Graduação em Ciência da Computação
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://tede2.pucrs.br/tede2/handle/tede/11665
Resumo: Stream processing is a computing paradigm that addresses the gathering, processing, and analysis of a high-volume heterogeneous continuous data stream, aiming to extract valuable information in real-time. Considering the need for these systems to run for long periods, possibly indefinitely, reprocessing all data in case of failure can be highly costly or even unfeasible. Thus, it is essential for a stream processing system not only to recover after a failure but also to ensure that the generated results are correct. SPar is an annotation-based C++ domain-specific language designed to simplify the development of stream processing applications for multiple parallel architectures. In distributed architectures, SPar generates code using DSParLib, which does not provide fault tolerance mechanisms or strong message delivery guarantees. Other parallel programming alternatives in the literature, such as MPI, are low-level APIs with restrictive support for implementing resilient parallel applications. Most state-of-the-art distributed parallel programming tools for streaming applications with resilience support are available in Java. Given these factors, the main objective of this master’s thesis is to investigate fault tolerance and exactly-once semantics for streaming systems so that it is possible to support it on the SPar software ecosystem without rewriting the user source code. To this end, we created ResiPipe, a C++ library for fault-tolerant distributed stream processing that became a runtime system from the SPar ecosystem to execute parallel code. The results demonstrate that ResiPipe delivers performance comparable to, and in some cases superior o, other analyzed stream processing libraries, in addition to requiring fewer source lines of code (SLOC) per application and presenting a reduced estimated development time, according to Halstead’s method
id P_RS_52b122f49ceaf725ae2cb95a83d0756c
oai_identifier_str oai:tede2.pucrs.br:tede/11665
network_acronym_str P_RS
network_name_str Biblioteca Digital de Teses e Dissertações da PUC_RS
repository_id_str
spelling Fault tolerance for high-level parallel and distributed stream processing in C++Tolerancia a falhas para processamento stream paralelo e distribuido de alto nivel em C++Parallel ProgrammingDomain-Specific LanguageResilienceMessage Delivery GuaranteesLinear PipelineStream ParallelismProgramação ParalelaLinguagem de Domínio EspecíficoGarantias de Entrega de MensagemPipeline LinearParalelismo de StreamCIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAOStream processing is a computing paradigm that addresses the gathering, processing, and analysis of a high-volume heterogeneous continuous data stream, aiming to extract valuable information in real-time. Considering the need for these systems to run for long periods, possibly indefinitely, reprocessing all data in case of failure can be highly costly or even unfeasible. Thus, it is essential for a stream processing system not only to recover after a failure but also to ensure that the generated results are correct. SPar is an annotation-based C++ domain-specific language designed to simplify the development of stream processing applications for multiple parallel architectures. In distributed architectures, SPar generates code using DSParLib, which does not provide fault tolerance mechanisms or strong message delivery guarantees. Other parallel programming alternatives in the literature, such as MPI, are low-level APIs with restrictive support for implementing resilient parallel applications. Most state-of-the-art distributed parallel programming tools for streaming applications with resilience support are available in Java. Given these factors, the main objective of this master’s thesis is to investigate fault tolerance and exactly-once semantics for streaming systems so that it is possible to support it on the SPar software ecosystem without rewriting the user source code. To this end, we created ResiPipe, a C++ library for fault-tolerant distributed stream processing that became a runtime system from the SPar ecosystem to execute parallel code. The results demonstrate that ResiPipe delivers performance comparable to, and in some cases superior o, other analyzed stream processing libraries, in addition to requiring fewer source lines of code (SLOC) per application and presenting a reduced estimated development time, according to Halstead’s methodO processamento de stream é um paradigma computacional voltado para a coleta, o processamento e a análise de fluxos contínuos de dados heterogêneos em grande volume, com o objetivo de extrair informações valiosas em tempo real. Considerando que esses sistemas precisam ser executados por longos períodos, às vezes indefinidamente, realizar o reprocessamento por completo dos dados em caso de falha pode ser extremamente custoso ou até inviável. Sendo assim, é fundamental que um sistema de processamento de stream não apenas se recupere de falhas, mas também garanta a integridade dos resultados. A SPar consiste em uma linguagem de domínio específico para C++ baseada em anotações, projetada para simplificar o desenvolvimento de aplicações de processamento de stream para múltiplas arquiteturas paralelas. Em arquiteturas distribuídas, a SPar gera código utilizando a DSParLib, que não fornece mecanismos de tolerância a falhas nem garantias de entrega de mensagens. Outras alternativas para programação paralela existentes na literatura, como o MPI, são APIs de baixo nível com suporte restrito para a implementação de aplicações paralelas resilientes. Grande parte das ferramentas no atual estado da arte em relação a programação paralela e distribuída para aplicações de stream com suporte à resiliência está disponível em Java. Diante desses fatores, o objetivo principal desta dissertação de mestrado consiste em investigar mecanismos de tolerância a falhas e semântica exactly-once para sistemas de processamento de stream, de forma que possam ser suportados no ecossistema de software SPar sem a necessidade de reescrever o código-fonte do usuário. Para esse fim, criamos a ResiPipe, uma biblioteca em C++ para o processamento de stream distribuído e tolerante a falhas, que se tornou parte do ecossistema SPar para executar código paralelo. Os resultados obtidos demonstram que a ResiPipe apresenta desempenho comparável, em alguns casos superior, a outras bibliotecas de processamento de stream analisadas, além de apresentar um menor número de linhas de código fonte (SLOC) por aplicação e uma estimativa de tempo de desenvolvimento reduzida, conforme o método de HalsteadPontifícia Universidade Católica do Rio Grande do SulEscola PolitécnicaBrasilPUCRSPrograma de Pós-Graduação em Ciência da ComputaçãoGriebler, Dalvan Jairhttp://lattes.cnpq.br/1989039890812573Alf, Lucas Machado2025-06-03T20:49:49Z2025-03-24info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://tede2.pucrs.br/tede2/handle/tede/11665enginfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da PUC_RSinstname:Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)instacron:PUC_RS2025-06-03T23:00:32Zoai:tede2.pucrs.br:tede/11665Biblioteca Digital de Teses e Dissertaçõeshttp://tede2.pucrs.br/tede2/PRIhttps://tede2.pucrs.br/oai/requestbiblioteca.central@pucrs.br||opendoar:2025-06-03T23:00:32Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)false
dc.title.none.fl_str_mv Fault tolerance for high-level parallel and distributed stream processing in C++
Tolerancia a falhas para processamento stream paralelo e distribuido de alto nivel em C++
title Fault tolerance for high-level parallel and distributed stream processing in C++
spellingShingle Fault tolerance for high-level parallel and distributed stream processing in C++
Alf, Lucas Machado
Parallel Programming
Domain-Specific Language
Resilience
Message Delivery Guarantees
Linear Pipeline
Stream Parallelism
Programação Paralela
Linguagem de Domínio Específico
Garantias de Entrega de Mensagem
Pipeline Linear
Paralelismo de Stream
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
title_short Fault tolerance for high-level parallel and distributed stream processing in C++
title_full Fault tolerance for high-level parallel and distributed stream processing in C++
title_fullStr Fault tolerance for high-level parallel and distributed stream processing in C++
title_full_unstemmed Fault tolerance for high-level parallel and distributed stream processing in C++
title_sort Fault tolerance for high-level parallel and distributed stream processing in C++
author Alf, Lucas Machado
author_facet Alf, Lucas Machado
author_role author
dc.contributor.none.fl_str_mv Griebler, Dalvan Jair
http://lattes.cnpq.br/1989039890812573
dc.contributor.author.fl_str_mv Alf, Lucas Machado
dc.subject.por.fl_str_mv Parallel Programming
Domain-Specific Language
Resilience
Message Delivery Guarantees
Linear Pipeline
Stream Parallelism
Programação Paralela
Linguagem de Domínio Específico
Garantias de Entrega de Mensagem
Pipeline Linear
Paralelismo de Stream
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
topic Parallel Programming
Domain-Specific Language
Resilience
Message Delivery Guarantees
Linear Pipeline
Stream Parallelism
Programação Paralela
Linguagem de Domínio Específico
Garantias de Entrega de Mensagem
Pipeline Linear
Paralelismo de Stream
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
description Stream processing is a computing paradigm that addresses the gathering, processing, and analysis of a high-volume heterogeneous continuous data stream, aiming to extract valuable information in real-time. Considering the need for these systems to run for long periods, possibly indefinitely, reprocessing all data in case of failure can be highly costly or even unfeasible. Thus, it is essential for a stream processing system not only to recover after a failure but also to ensure that the generated results are correct. SPar is an annotation-based C++ domain-specific language designed to simplify the development of stream processing applications for multiple parallel architectures. In distributed architectures, SPar generates code using DSParLib, which does not provide fault tolerance mechanisms or strong message delivery guarantees. Other parallel programming alternatives in the literature, such as MPI, are low-level APIs with restrictive support for implementing resilient parallel applications. Most state-of-the-art distributed parallel programming tools for streaming applications with resilience support are available in Java. Given these factors, the main objective of this master’s thesis is to investigate fault tolerance and exactly-once semantics for streaming systems so that it is possible to support it on the SPar software ecosystem without rewriting the user source code. To this end, we created ResiPipe, a C++ library for fault-tolerant distributed stream processing that became a runtime system from the SPar ecosystem to execute parallel code. The results demonstrate that ResiPipe delivers performance comparable to, and in some cases superior o, other analyzed stream processing libraries, in addition to requiring fewer source lines of code (SLOC) per application and presenting a reduced estimated development time, according to Halstead’s method
publishDate 2025
dc.date.none.fl_str_mv 2025-06-03T20:49:49Z
2025-03-24
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://tede2.pucrs.br/tede2/handle/tede/11665
url https://tede2.pucrs.br/tede2/handle/tede/11665
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Pontifícia Universidade Católica do Rio Grande do Sul
Escola Politécnica
Brasil
PUCRS
Programa de Pós-Graduação em Ciência da Computação
publisher.none.fl_str_mv Pontifícia Universidade Católica do Rio Grande do Sul
Escola Politécnica
Brasil
PUCRS
Programa de Pós-Graduação em Ciência da Computação
dc.source.none.fl_str_mv reponame:Biblioteca Digital de Teses e Dissertações da PUC_RS
instname:Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
instacron:PUC_RS
instname_str Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
instacron_str PUC_RS
institution PUC_RS
reponame_str Biblioteca Digital de Teses e Dissertações da PUC_RS
collection Biblioteca Digital de Teses e Dissertações da PUC_RS
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
repository.mail.fl_str_mv biblioteca.central@pucrs.br||
_version_ 1850041319435534336