Machine Learning em larga escala com Apache Spark - TecMundo
29/12/2020 às 09:00
Na terceira edição do Talks'n'Labs, Vanderlei Munhoz, Software Developer & Advocate da IBM Brasil, apresentou a palestra "Machine Learning em larga escala com Apache Spark".
Os tópicos abordados nessa apresentação foram:
Abordagem MapReduce
Projeto Hadoop
IBM Cloud Pak for Data e Watson Studio
Principal Component Analysis, Random Forests, K-Fold Cross-Validation e Grid Search com Apache Spark
Quer entender de forma resumida todos esses tópicos e aprender mais sobre os temas tratados nessa apresentação? É só continuar a leitura deste artigo.
Lembrando que esta publicação recebe o apoio do IBM Blue Profile, uma plataforma que ajuda programadores e outros profissionais de TI a definir o rumo de suas carreiras. Se você trabalha na área ou está pensando em ingressar nessa carreira, deveria considerar seriamente visitar o site, adicioná-lo aos seus favoritos e visitá-lo com frequência.
Entenda um pouco sobre a linguagem Scala.Fonte: Vanderlei Munhoz
Criada em 2001 por Martin Odersky, Scala é baseada na Java Virtual Machine (JVM), ou "Máquina Virtual Java" (em tradução livre), e trata-se de uma linguagem multiplataforma. Ela foi criada principalmente para programação funcional e tem um excelente suporte para programação concorrente.
Esses são os motivos que fazem com que a Scala seja muito usada na área de Ciência de Dados, especialmente com workloads muito grandes. Inclusive, o Spark é desenvolvido nessa linguagem assim como diversas ferramentas que também trabalham com grande quantidade de dados.
A abordagem MapReduce é uma boa forma de lidar com tarefas paralelas.Fonte: Vanderlei Munhoz
Embora tenha sido popularizada com o projeto Hadoop, a abordagem MapReduce já existia no mundo da Ciência da Computação há muito tempo. Trata-se de uma abordagem para processamento de tarefas paralelizáveis, ou seja, que podem ser realizadas em paralelo.
Por meio dessa abordagem, as tarefas são distribuídas em um grande número de computadores. Um bom exemplo é a contagem de palavras em uma sentença qualquer. A partir de uma entrada, partes da frase são divididas (split), mapeadas e finalmente reduzidas para se chegar ao resultado esperado.
Como as tarefas são realizadas de modo paralelo, é possível acelerar de forma considerável o workflow de atividades.
O projeto Hadoop possui limitações que foram superadas.Fonte: Vanderlei Munhoz
Lançado em 2006, o Hadoop foi escrito em Java, e o seu objetivo era dar uma base ou um framework para os programadores conseguirem trabalhar de maneira distribuída. Por conta disso, esse projeto oferece gerenciadores de clusters com vários nós que vão realizar as operações pretendidas.
As desvantagens desse projeto estão relacionadas ao fato de o Hadoop usar um sistema de arquivos distribuído projetado para hardware comercial. Isso significa que ele não pode ser instalado em qualquer computador. Além disso, cada operação é independente e requer tanto leitura quanto escrita no sistema de arquivos.
O Apache Spark foi desenvolvido na linguagem Scala.Fonte: Vanderlei Munhoz
Muito mais moderno e recente que o Hadoop, o Apache Spark foi lançado em 2014 e foi completamente desenvolvido em Scala. Todas as operações são executadas em memória RAM por meio de uma abstração chamada Resilient Distributed Dataset (RDD). Nesse modelo, as operações não são independentes e são computadas apenas quando necessário.
No Apache Spark, todas as tarefas são um Directed Acyclic Graph (DAG), que basicamente é um grafo direcionado. Não existem loops, e o caminho de processamento é sempre bem-definido. Esse modelo é uma generalização restrita do modelo MapReduce.