Apache Spark: Uma breve introdução
Share on facebook
Share on twitter
Share on linkedin

Apache Spark: Uma breve introdução

dti digital

dti digital

Um dos nossos colaboradores especializados!

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

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)

Por certo tempo o Hadoop dominou o mercado de Big Data, mas ainda havia muitos problemas que não poderiam ser resolvidos. Em função disso, diversas ferramentas foram criadas usando-o como base, mas ainda sem um padrão o que tornou difícil sua utilização. Em 2009 a AmpLab lança a primeira versão do Spark que em 2013 seria então assumida pela Apache Software Foundation.

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:

Camadas de arquitetura do Apache Spark

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, que 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: o SparkSQL poderá ser utilizado para 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

Preencha seus dados para receber nossa newsletter!

Ficou com dúvidas?

contato@dtidigital.com.br
R. Antônio de Albuquerque, 330 – 14° andar
Savassi, Belo Horizonte – MG, 30112-010

Cuidado

Nós utilizamos cookies e outras tecnologias semelhantes para analisar sua experiência no site e personalizar conteúdos e anúncios durante sua navegação. Ao navegar pelo site, você autoriza a DTI Digital a realizar tal monitoramento. Conheça nossa Política de Privacidade.

you are being redirected to a page in portuguese, do you want to continue?