Spark

O Apache Spark é uma ferramenta Big Data que tem o objetivo de processar grandes conjuntos de dados de forma paralela e distribuída. Ela estende o modelo de programação MapReduce popularizado pelo Apache Hadoop, facilitando bastante o desenvolvimento de aplicações de processamento de grandes volumes de dados. Além do modelo de programação estendido, o Spark também apresenta uma performance muito superior ao Hadoop, chegando em alguns casos a apresentar uma performance quase 100x maior.

Outra grande vantagem do Spark, é que todos os componentes funcionam integrados na própria ferramenta, como o Spark Streamming, o Spark SQL e o GraphX, diferentemente do Hadoop, onde é necessário utilizar ferramentas que se integram a ele, mas que são distribuídas separadamente, como o Apache Hive. Além disso, outro aspecto importante é que ele permite a programação em três linguagens: JavaScala e Python.

O Spark tem diversos componentes para diferentes tipos de processamentos, todos construídos sobre o Spark Core, que é o componente que disponibiliza as funções básicas para o processamento como as funções map, reduce, filter e collect. Entre estes destacam-se as presentes na Figura abaixo:

  • o SparkSQL para a utilização de SQL na realização de consultas e processamento sobre os dados no Spark;
  • o Spark Streamming, que possibilita o processamento de fluxos em tempo real;
  • a MLlib, que é a biblioteca de aprendizado de máquina, com deferentes algoritmos para as mais diversas atividades, como clustering;
  • o GraphX, que realiza o processamento sobre grafos.

Figura 1. Componentes do Apache Spark.

Esse artigo mostrará as principais funcionalidades do Spark Core como as transformações, que são métodos para realizar operações como filtros e mapeamentos, além das ações que são operações para a realização de contagens e somatórios.


Arquitetura do Spark

Nessa seção serão explicadas as principais funcionalidades do Spark Core. Primeiro, será mostrada a arquitetura das aplicações e depois veremos os conceitos básicos no modelo de programação para o processamento de conjuntos de dados.

A arquitetura de uma aplicação Spark é constituída por três partes principais:

  1. o Driver Program, que é a aplicação principal que gerencia a criação e é quem executará o processamento definido pelo programados;
  2. o Cluster Manager é um componente opcional que só é necessário se o Spark for executado de forma distribuída. Ele é responsável por administrar as máquinas que serão utilizadas como workers;
  3. os Workers, que são as máquinas que realmente executarão as tarefas que são enviadas pelo Driver Program. Se o Spark for executado de forma local, a máquina desempenhará tanto o papel de Driver Program como de Worker.

Figura 2 mostra a arquitetura do Spark e seus principais componentes.

Arquitetura do Spark

Figura 2. Arquitetura do Spark.

Além da arquitetura, é importante conhecer os principais componentes do modelo de programação do Spark. Existem três conceitos fundamentais que serão utilizados em todas as aplicações desenvolvidas:

  1. Resilient Distributed Datasets (RDD): abstraem um conjunto de objetos distribuídos no cluster, geralmente executados na memória principal. Estes podem estar armazenados em sistemas de arquivo tradicional, no HDFS (HadoopDistributed File System) e em alguns Banco de Dados NoSQL, como Cassandra e HBase. Ele é o objeto principal do modelo de programação do Spark, pois são nesses objetos que serão executados os processamentos dos dados.
  2. Operações: representam transformações (como agrupamentos, filtros e mapeamentos entre os dados) ou ações (como contagens e persistências) que são realizados em um RDD. Um programa Spark normalmente é definido como uma sequência de transformações ou ações que são realizadas em um conjunto de dados.
  3. Spark Context: o contexto é o objeto que conecta o Spark ao programa que está sendo desenvolvido. Ele pode ser acessado como uma variável em um programa que para utilizar os seus recursos.

 

Anúncios