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: Java, Scala 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:
- o Driver Program, que é a aplicação principal que gerencia a criação e é quem executará o processamento definido pelo programados;
- 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;
- 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.
A Figura 2 mostra a arquitetura do Spark e seus principais componentes.
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:
- 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.
- 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.
- 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.
- Mais conteúdos
- Apache Spark
- Apache Spark™ is a fast and general engine for large-scale data processing
- Apache Spark Examples
- Apache Spark Download
- Componentes
- BlinkDB – Queries with Bounded Errors and Bounded Response Times on Very Large Data
- Spark SQL is Apache Spark’s module for working with structured data
- Spark Streaming – makes it easy to build scalable fault-tolerant streaming applications
- Big Data com Apache Spark Part 3: Spark Streaming
- Mais ferramentas Streaming
- Apache Samza
- Apache Storm
- Apache Flume
- Apache Kafka é um sistema para gerenciamento de fluxos de dados em tempo real, gerados a partir de web sites, aplicações e sensores.
- MLlib is Apache Spark’s scalable machine learning library
- GraphX is Apache Spark’s API for graphs and graph-parallel computation.
- Apache Spark™ is a fast and general engine for large-scale data processing
- Links associados
- Introdução ao Apache Spark
- Big Data com Apache Spark – Parte 1: Introdução
- Hadoop ou Spark? Veja qual se aplica melhor para a sua empresa
- Cinco coisas que você precisa saber sobre Hadoop e Apache Spark
- Um comparativo entre MapReduce e Spark para analise de Big Data
- Alluxio – Open Source Memory Speed Virtual Distributed Storage
- Creating a Spark Cluster on AWS EMR
- Apache Spark