Matei Zaharia et al. propuseram o framework Spark como alternativa para processar workloads que reutilizam dados através de múltiplas operações paralelas. As opções a seguir apresentam características do framework Spark, à exceção de uma. Assinale-a.
- A)Spark oferece suporte a dois tipos restritos de variáveis compartilhadas: broadcast e accumulators.
Certa: Spark realmente tem variáveis compartilhadas restritas, principalmente broadcast variables e accumulators.
- B)Spark prove três principais abstrações para a programação paralela: RDDs, operações paralelas, e operações de comunicação.
Errada: o Spark não define suas abstrações principais dessa forma, pois a base conceitual está nos RDDs e em suas operações, não em "operações de comunicação" como pilar separado.
- C)Os RDDs suportam tolerância a falhas por meio do conceito de linhagem (lineage).
Certa: os RDDs são tolerantes a falhas porque podem ser recriados a partir da linhagem das transformações.
- D)Os usuários podem explicitamente armazenar RDDs em cache na memória entre um conjunto de máquinas e reutilizá-lo em várias operações paralelas.
Certa: o usuário pode persistir RDDs em cache na memória para reutilização em múltiplas operações.
- E)RDDs (resilient distributed datasets) ou conjunto de dados distribuído resiliente é uma coleção de objetos de só leitura particionados em um conjunto de máquinas e pode ser reconstruído caso alguma partição for perdida.
Certa: RDDs são coleções distribuídas, de leitura, particionadas e reconstruíveis em caso de perda de partição.
Gabarito: B
O Spark surgiu para acelerar processamento distribuído, especialmente quando os dados precisam ser reaproveitados em várias etapas, sem ficar relendo tudo do disco o tempo inteiro. A estrela da arquitetura são os RDDs, que são conjuntos distribuídos, imutáveis e tolerantes a falhas. Se uma partição some, o Spark consegue reconstruí-la pela linhagem, isto é, pela sequência de operações que gerou aquele dado. Além disso, o usuário pode persistir ou colocar RDDs em cache na memória, o que faz enorme diferença quando a mesma massa de dados participa de várias operações paralelas. O Spark também trabalha com variáveis compartilhadas restritas, como broadcast variables e accumulators, que servem para cenários bem específicos de comunicação entre as tarefas. A questão erra na alternativa B porque ela mistura os conceitos. O Spark não é descrito por "três principais abstrações" como RDDs, operações paralelas e operações de comunicação. Na formulação clássica do framework, as abstrações centrais são os RDDs e as operações sobre eles, com apoio das variáveis compartilhadas restritas. Por isso, B é a exceção. Em resumo: quando a banca falar em tolerância a falhas, pense em lineage; quando falar em reaproveitamento, pense em cache; e quando falar em compartilhamento de dados entre tarefas, lembre de broadcast e accumulators. O Spark gosta de velocidade, mas também gosta de memória bem usada.