Dissertação

{en_GB=Pipelined execution of stages in Apache Spark} {} EVALUATED

{pt=Esta dissertação visa a investigação da eficiência de uma base fundamental para a construção de plataformas de processamento de big-data modernas, tais como o Apache Spark. Este tipo de plataformas suportam tarefas complexas de análise de dados, permitindo que os cientistas de dados expressem manipulações arbitrárias aos dados, através de um grafo directo de operadores de transformações, executadas de forma distribuı́da em várias máquinas. Algumas soluções recentes, como a plataforma Spark acima mencionada, empregam uma estratégia baseada em lotes. Nesta estratégia, os operadores que induzem a troca de dados entre máquinas são utilizados para marcar o inı́cio de uma nova etapa, que agrupa logicamente o conjunto de operadores que podem ser executados sem que exista a necessidade de estes requerirem dados de operadores executados em máquinas diferentes. Uma aplicação Spark é baseada em lotes, sendo que se a etapa i + 1 requer o resultado da etapa i, então a etapa i deve terminar a sua computação antes que a etapa i + 1 possa ter inı́cio e carregar os dados da etapa i. Esta escolha abordagem pode levar à utilização sub-óptima dos recursos do cluster. Uma abordagem alternativa consiste no encadeamento da transmissão de dados entre etapas, tal que a etapa i + 1 possa iniciar o processamento de dados à medida que estes são gerados pela etapa i. Esta tese estende o Apache Spark, permitindo a execução de etapas de forma sobreposta, e compara as duas estratégias apresentadas. , en=This dissertation investigates the efficiency of a fundamental, low-level building block of modern big-data processing platforms, like Apache Spark. This type of platform supports complex data analysis tasks by allowing data scientists to express arbitrary data manipulations via a direct graph of, so called, transformation operators that executed in a distributed fashion across a cluster of machines. Some state-of-the-art solutions, like the aforementioned Spark platform, take what can be defined a “batch” strategy. Operators that induce exchange of data among machines are used to demarcate the beginning of a new stage, which serves to logically group a set of operators that can execute without requiring any input from operators running on different machines. A Spark application is executed in batch mode, in the sense that if the stage i + 1 requires the result of stage i, then stage i needs to finish its computation before stage i + 1 can begin and load the data from stage i. This choice, however, can lead to sub-optimal utilization of cluster’s resources. Another alternative approach consists of pipelining data transmission between stages, so that stage i+1 can start processing the data as it is generated by stage i. With this strategy, the execution of the two stages are overlapped, allowing higher utilization of cluster’s resources. In this thesis, Apache Spark is extended to support the pipeline execution. An extensive experimental evaluation was conducted using both synthetic and realistic workloads to evaluate the performance difference between batch and pipelined execution.}
{pt=análise de dados, big-data, Spark, lote, encadeamento, en=data-analytic, Spark, big-data, batch, pipeline}

Outubro 19, 2016, 16:30

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

Paolo Romano

Departamento de Engenharia Informática (DEI)

Professor Associado