Escalonador Distribuído de Tarefas para o Apache Spark
Autores
6677 |
2993,135
|
|
6678 |
2993,135
|
Informações:
Publicações do PESC
Frameworks de análises de grandes quantidades de dados possuem um papel de destaque na academia e na indústria. Eles tornam questões de paralelização e distribuição de computação transparentes a cientistas de dados, proporcionando-lhes maior produtividade no desenvolvimento e implementação de aplicações para análise de dados como algoritmos de aprendizagem de máquina e análises em streaming de dados.
Entretanto, prover essa camada de abstração traz grandes desafios ao envolver questões como alto desempenho no uso de diversas unidades de processamento, nos mecanismos de comunicação e nos dispositivos de armazenamento.
Um dos principais desafios está relacionado ao escalonamento de tarefas. Realizar essa ação de forma eficiente e escalável é de suma importância, visto que ela impacta significantemente o desempenho e a utilização de recursos computacionais.
Este trabalho propõe uma estratégia hierárquica de distribuir o escalonamento de tarefas em Frameworks de análises de grandes quantidades de dados, introduzindo o escalonador assistente, cuja função é aliviar a carga do escalonador centralizado ao se responsabilizar por uma fração da carga de escalonamento.
O Apache Spark foi o Framework utilizado para implementarmos uma versão do escalonador de tarefas distribuído hierárquico e para realizarmos experimentos comparativos para testar a escalabilidade da proposta.
Utilizando 32 nós computacionais, os resultados mostram que a nossa prova de conceito mantém valores para tempos de execução semelhantes aos do Apache Spark original.
Além disso, mostramos que, com o emprego dos escalonadores assistentes, conseguimos fazer melhor uso dos processadores dos nós durante a execução dos experimentos.
Por fim, expomos um gargalo existente no modelo de execução do Apache Spark devido à centralização das decisões de escalonamento.
Data intensive frameworks have a featured role in industry and academia. They make computation distribution and parallelization transparent to data scientists providing them greater productivity in data analytics application development like machine learning and deep learning algorithms implementations.
However, in order to provide this abstraction layer several issues emerge like obtaining good performance when using many processing units, handling communication and coping with storage devices.
One of the most relevant challenges is related with task scheduling. Perform this action in an ecient and scalable manner is very important, since it impacts significantly computing resources performance and utilization.
This work proposes an hierarchical manner of distributing task scheduling in data intensive frameworks, introducing the scheduler assistant whose role is alleviate central scheduler job as it takes responsibility of a share of the scheduling load.
We use Apache Spark for implementing a version of the hierarchical distributed task scheduler and to perform comparative experiments for testing the proposal scalability.
Using 32 computational nodes, results show our proof of concept maintains execution times values similar to those found with the original version of Apache Spark.
Moreover we show that deploying scheduler assistants the system can better utilize computational nodes processors during experiments executions.
Finally, we expose a bottleneck due the centralization of scheduling decisions at Apache Spark execution model.