Apache Spark: Uma breve introdução
Se você trabalha ou pretende trabalhar com Big Data é possível que você já conheça o Spark ou pelo menos já tenha ouvido falar sobre. Independente de qual o seu caso, neste artigo vamos explicar do que se trata Spark, como ele funciona e descobrir se ele pode te ajudar!
Sumário
História do Apache Spark
Lidar com grande volume de dados costumava ser uma tarefa praticamente impossível a pouco mais de uma década. Isso ocorria em função de que não tínhamos tanto poder computacional e plataformas de processamento paralelo ainda não eram realidades. Entretanto, com a criação do Hadoop surgiu uma ferramenta que resolvia os 3 grandes problemas da computação paralela sendo:
- A paralelização (como performar subsets simultaneamente)
- Distribuição (como distribuir os dados)
- E tolerância a falha (como lidar falha de componente)
A Apache Software Foundation assumiu a primeira versão do Spark lançada pela AmpLab em 2009, após o Hadoop ter dominado o mercado de Big Data por algum tempo. No entanto, o Hadoop enfrentou vários problemas que não puderam ser resolvidos. Como resultado, várias ferramentas foram criadas com base nele, mas sem um padrão, o que tornou sua utilização difícil.
Segundo o criador do Spark, Matei Zaharia, podemos defini-lo como uma ferramenta computação paralela que generaliza o modelo de programação do Map-Reduce, aproveitando assim todos as vantagens já implementadas pelo Hadoop e desenvolvendo melhorias como veremos a seguir.
Arquitetura básica do Spark
Podemos entender o Spark como uma evolução do Hadoop e do paradigma de programação Map-Reduce. Ele pode ser de 10 a 100 vezes mais rápido graças ao seu uso eficiente da memória que não persiste os dados em discos enquanto está realizando seu processamento.
O Spark atualmente é criado em Scala rodando sobre JVM — Java Virtual Machine. Contudo, podemos usar 5 linguagens para desenvolver: Scala, Java, SQL, Python, R.
Além disso, ao ser desenvolvido, uma grande preocupação foi a criação de uma API que conseguisse gerenciar todo o paralelismo. O objetivo é que o desenvolver final possa ter a impressão de estar trabalhando apenas com um computador e pudesse de fato focar esforços em suas tarefas seja de transformação, analise ou ainda outras.
É possível ter uma ideia de como o Spark está organizado pelo seguinte diagrama, por exemplo:
Low Level API’s
Este nível contém as funcionalidades básicas para rodar jobs e outras funcionalidades requeridas pelos demais componentes. É nela também que definimos o conceito de RDD — Resilient distributed dataset, uma abstração da coleção de dados distribuída.
Outras funções importantes desta camada são o gerenciamento de segurança, rede, agendamento e ainda o acesso logico a sistemas de arquivos HDFS, GlusterFS, Amz S3 e demais.
Structured API’s
Já o nível de Structured API trabalha a manipulação dos dados seja por meio dos DataSets ou dos DataFrames. Eles podem ser lidos de diversos formatos como Hive, Parquet, JSON e outros ainda. A diferença entre os dois -DataSets e DataFrames- está na tipagem que será pré-definida e checada no caso dos DataSets, enquanto no DataFrame somente haverá uma checagem entre as linhas. Utilizando o SparkSQL (API que nos permite escrever querys em SQL), podemos manipular os dados da forma como desejamos. Além disso, com a ajuda do Catalyst possuímos um otimizador de query trazendo mais eficácia.
High Level
No nível mais alto, temos o ecossistema Spark com suas diversas bibliotecas incluído Spark Streaming, Spark MLlib e Spark GraphX. São responsáveis respectivamente por cuidar de ingestão em streaming (seja por HDFS, Kafka…) e os processos ao redor como recuperação de falhas; criar e validar modelos clássicos de machine learning; e por último lidar com grafos e seus algoritmos.
Pra quem é o Spark?
Graças ao seu suporte para 5 linguagens de desenvolvimento a utilização do Spark pode ser de fácil adoção por todo o time de dados. Vejamos com mais detalhes:
- Engenheiro de Dados: Poderá utilizar o Spark para o processo de extração, transformação e carga dos dados (ETL/ELT/EL), sendo que os processos podem ser em batch ou streaming;
- Cientistas de Dados: Através de bibliotecas como SparkML ou Spark GraphX o profissional poderá aplicar modelos de ML e lidar com problemas de grafos;
- Analistas de Dados: Poderá gerar relatórios e insights sobre o volume de dados de forma otimizada graças ao Catalyst.
Com o uso combinado entre Spark e Databricks, o desenvolvimento de programas fica ainda mais simples podendo ainda ser integrado com grandes serviços de nuvem como Azure, AWS e GCP.
Quer descobrir se o Spark pode ser útil para você? Então fale com a DTI. Estamos abertos a tirar dúvidas e criar uma solução que gere valor ao seu negócio! Além disso, podemos mostrar como o agilismo e a transformação digital pode facilitar processos dentro da sua empresa!
No podcast Os Agilistas você confere de perto a percepção DTI sobre o agilismo e como aplicá-lo de maneira eficiente em uma equipe. Te esperamos lá! E se você tem interesse em fazer parte de um time que entende de cultura ágil e te dá a oportunidade de trabalhar com Spark, na prática, se inscreva em nossa página de carreiras e venha ser DTI!
Por: Vitor Oliveira dos Santos
Data Science
Confira outros artigos
Ciência de dados explicando coisas que acontecem no mundo
Hoje cada ser humano com um dispositivo móvel em mãos produz uma série de dados, gerados em velocidade, volume e variedade nunca vistos antes. A internet das coisas tem se tornado um mar de oportunidades para a ciência de dados nos últimos anos. Isso acontece, porque, através de sensores inteligentes e softwares que transmitem dados […]
Data Science
Dados Geoespaciais: Uma visão geral
Dentre todas as bases de dados em que tive a oportunidade de trabalhar, poucas foram as vezes em que não encontrei dados geoespaciais. Sumário0.1 Mas o que são dados geoespaciais?1 Conceitos Básicos dos dados1.1 Como representar os dados2 Operações Geoespaciais2.1 Operações de relacionamento3 Visualização4 Aplicações de dados georreferenciados4.1 Dados georreferenciais e a pandemia5 Referências e […]
Data Science
Estrutura de dados: o que é e qual a sua importância?
Entenda o que é a importância da estrutura de dados na linguagem da programação O universo da programação possui uma série de fundamentos considerados essenciais para o desenvolvimento dos mais diversos softwares. Considerada um ponto-chave em qualquer projeto, a estrutura de dados tem um papel relevante no trabalho de todos os programadores. Mas você sabe […]
Data Science