O que é Apache Spark?
O Apache Spark é um sistema de processamento distribuído de código aberto usado para workloads de big data. O sistema usa armazenamento em cache na memória e execução otimizada de consultas para oferecer consultas analíticas rápidas de dados de qualquer tamanho. Fornece APIs de desenvolvimento em Java, Scala, Python e R e é compatível com a reutilização de código em várias workloads: processamento de lotes, consultas interativas, análises em tempo real, machine learning e processamento de gráficos. Você o encontrará sendo usado por organizações de qualquer setor, incluindo FINRA, Yelp, Zillow, DataXu, Urban Institute e CrowdStrike.
Qual é a história do Apache Spark?
O Apache Spark começou em 2009 como um projeto de pesquisa no AMPLab da UC Berkley, uma colaboração envolvendo estudantes, pesquisadores e professores, focada em domínios de aplicações com uso intensivo de dados. O objetivo do Spark era criar uma nova estrutura, otimizada para processamento iterativo rápido, como machine learning e análise interativa de dados, mantendo a escalabilidade e a tolerância a falhas do Hadoop MapReduce. O primeiro artigo intitulado “Spark: Cluster Computing with Working Sets” (“Spark: Computação em Cluster com Conjuntos de Trabalho”) foi publicado em junho de 2010, e o Spark era de código aberto sob uma licença BSD. Em junho de 2013, o Spark passou para o status de incubação na Apache Software Foundation (ASF) e se estabeleceu como um projeto de alto nível da Apache em fevereiro de 2014. O Spark pode ser executado de forma independente, no Apache Mesos ou, com mais frequência, no Apache Hadoop.
Como funciona o Apache Spark?
O Hadoop MapReduce é um modelo de programação para processar conjuntos de big data com um algoritmo distribuído paralelo. Os desenvolvedores podem escrever operadores massivos paralelizados, sem precisar se preocupar com a distribuição do trabalho e com a tolerância a falhas. No entanto, um desafio para o MapReduce é o processo sequencial de várias etapas necessário para executar um trabalho. Em cada etapa, o MapReduce lê os dados do cluster, executa operações e grava os resultados no HDFS. Como cada etapa exige uma leitura e gravação no disco, as tarefas do MapReduce são mais lentas devido à latência da E/S do disco.
O Spark foi criado para resolver as limitações do MapReduce, processando na memória, reduzindo o número de etapas em uma tarefa e reutilizando dados em várias operações paralelas. Com o Spark, é necessária apenas uma etapa em que os dados são lidos na memória, as operações são executadas e os resultados são gravados de volta, resultando em uma execução muito mais rápida. O Spark também reutiliza dados usando um cache na memória para acelerar consideravelmente os algoritmos de machine learning que chamam repetidamente uma função no mesmo conjunto de dados. A reutilização de dados é realizada por meio da criação de DataFrames, uma abstração sobre o Conjunto de dados resiliente distribuído (RDD), que é uma coleção de objetos armazenados em cache na memória e reutilizados em várias operações do Spark. Isso reduz drasticamente a latência, fazendo com que o Spark seja várias vezes mais rápido que o MapReduce, especialmente ao realizar machine learning e análises interativas.
Principais diferenças: Apache Spark vs. Apache Hadoop
Além das diferenças no design do Spark e do Hadoop MapReduce, muitas organizações descobriram que essas estruturas de big data são complementares, usando-as juntas para resolver um desafio comercial mais amplo.
O Hadoop é uma estrutura de código aberto que tem o Sistema de Arquivos Distribuído do Hadoop (HDFS) como armazenamento, o YARN como forma de gerenciar recursos de computação usados por diferentes aplicações e a implementação do modelo de programação MapReduce como mecanismo de execução. Em uma implementação típica do Hadoop, diferentes mecanismos de execução também são implantados, como Spark, Tez e Presto.
O Spark é uma estrutura de código aberto focada em consultas interativas, machine learning e workloads em tempo real. Não tem seu próprio sistema de armazenamento, mas executa análises em outros sistemas de armazenamento, como o HDFS, ou em outras lojas populares, como Amazon Redshift, Amazon S3, Couchbase, Cassandra e outras. O Spark no Hadoop aproveita o YARN para compartilhar um cluster e um conjunto de dados comuns como outros mecanismos do Hadoop, garantindo níveis consistentes de serviço e resposta.
Quais são os benefícios do Apache Spark?
Há muitos benefícios do Apache Spark para torná-lo um dos projetos mais ativos no ecossistema Hadoop. Dentre eles estão:
Rápido
Por meio do armazenamento em cache na memória e execução otimizada de consultas, o Spark pode oferecer consultas analíticas rápidas de dados de qualquer tamanho.
Para desenvolvedores
O Apache Spark sustenta de modo nativo Java, Scala, R e Python, oferecendo a você várias linguagens para a criação de aplicativos. Essas APIs facilitam as coisas para seus desenvolvedores, pois ocultam a complexidade do processamento distribuído por trás de operadores simples e de alto nível que reduzem drasticamente a quantidade de código necessária.
Várias workloads
O Apache Spark vem com a capacidade de executar várias workloads, incluindo consultas interativas, análises em tempo real, machine learning e processamento de gráficos. Uma aplicação pode combinar várias workloads facilmente.
O que são workloads do Apache Spark?
A estrutura do Spark inclui:
- Spark Core como base para a plataforma
- Spark SQL para consultas interativas
- Spark Streaming para análises em tempo real
- Spark MLlib para machine learning
- Spark GraphX para processamento de gráficos
Spark Core
O Spark Core é a base da plataforma. É responsável pelo gerenciamento de memória, recuperação de falhas, programação, distribuição e monitoramento de tarefas e pela interação com sistemas de armazenamento. O Spark Core é exposto por meio de uma interface de programação de aplicações (APIs) criada para Java, Scala, Python e R. Essas APIs escondem a complexidade do processamento distribuído por trás de operadores simples e de alto nível.
MLlib
Machine Learning
O Spark inclui o MLlib, uma biblioteca de algoritmos para realizar machine learning em dados em grande escala. Os modelos de machine learning podem ser treinados por cientistas de dados com R ou Python em qualquer fonte de dados do Hadoop, salvos usando MLlib e importados para um pipeline baseado em Java ou Scala. O Spark foi projetado para computação rápida e interativa que é executada na memória, permitindo que o machine learning seja executado rapidamente. Os algoritmos incluem a capacidade de fazer classificação, regressão, agrupamento, filtragem colaborativa e mineração de padrões.
Spark Streaming
Tempo real
O Spark Streaming é uma solução em tempo real que aproveita a capacidade de agendamento rápido do Spark Core para fazer análises de streaming. Ingere dados em minilotes e permite a análise desses dados com o mesmo código de aplicação escrito para análise em lotes. Isso melhora a produtividade do desenvolvedor, pois eles podem usar o mesmo código para processamento em lotes e para aplicações de streaming em tempo real. O Spark Streaming é compatível com dados do Twitter, Kafka, Flume, HDFS e ZeroMQ, além de muitos outros encontrados no ecossistema de pacotes do Spark.
Spark SQL
Consultas interativas
O Spark SQL é um mecanismo de consulta distribuído que fornece consultas interativas de baixa latência até 100 vezes mais rápidas que o MapReduce. Inclui um otimizador baseado em custos, armazenamento colunar e geração de código para consultas rápidas e, ao mesmo tempo, escalável para milhares de nós. Os analistas de negócios podem usar o SQL padrão ou a Hive Query Language para consultar dados. Os desenvolvedores podem usar APIs, disponíveis no Scala, Java, Python e R. Ela oferece suporte a várias fontes de dados prontas para uso, incluindo JDBC, ODBC, JSON, HDFS, Hive, ORC e Parquet. Outras lojas populares, como Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB, Salesforce.com, Elasticsearch e muitas outras, podem ser encontradas no ecossistema de pacotes do Spark.
GraphX
Processamento de gráficos
O Spark GraphX é uma estrutura distribuída de processamento de gráficos construída sobre o Spark. O GraphX fornece ETL, análise exploratória e computação gráfica iterativa para permitir que os usuários criem e transformem de forma interativa uma estrutura de dados gráficos em grande escala. Ele vem com uma API altamente flexível e uma seleção de algoritmos gráficos distribuídos.
Quais são os casos de uso do Apache Spark?
O Spark é um sistema de processamento distribuído de uso geral usado para workloads de big data. Ele foi implantado em todos os tipos de casos de uso de big data para detectar padrões e fornecer informações em tempo real. Exemplos de casos de uso incluem:
Serviços financeiros
O Spark é usado no setor bancário para prever a rotatividade de clientes e recomendar novos produtos financeiros. Em bancos de investimento, o Spark é usado para analisar os preços das ações para prever tendências futuras.
Saúde
O Spark é usado para criar um atendimento abrangente ao paciente, disponibilizando dados aos profissionais de saúde da linha de frente para cada interação com o paciente. O Spark também pode ser usado para prever ou recomendar o tratamento do paciente.
Manufatura
O Spark é usado para eliminar o tempo de inatividade de equipamentos conectados à Internet, recomendando quando fazer a manutenção preventiva.
Varejo
O Spark é usado para atrair e manter clientes por meio de serviços e ofertas personalizados.
Como funciona a implantação do Apache Spark na nuvem?
O Spark é uma workload ideal na nuvem, porque a nuvem fornece desempenho, escalabilidade, confiabilidade, disponibilidade e grandes economias de escala. Uma pesquisa do ESG descobriu que 43% dos entrevistados consideram a nuvem como sua principal implantação para o Spark. Os principais motivos pelos quais os clientes perceberam a nuvem como uma vantagem para o Spark são: tempo de implantação mais rápido, melhor disponibilidade, atualizações de atributos/funcionalidades mais frequentes, mais elasticidade, mais cobertura geográfica e custos vinculados à utilização real.
Quais são as ofertas da AWS para o Apache Spark?
O Amazon EMR é o melhor local para implantar o Apache Spark na nuvem, porque combina a integração e os testes rigorosos das distribuições comerciais do Hadoop e do Spark com a escala, a simplicidade e a economia da nuvem. O serviço permite executar clusters do Spark em minutos, sem necessidade de executar provisionamento de nós, configuração de clusters, configuração do Spark ou ajustes de clusters. O EMR permite provisionar uma, centenas ou milhares de instâncias de computação em alguns minutos. Você pode usar o ajuste de escala automático para que o EMR aumente a escala verticalmente de seus clusters do Spark de forma automática para processar dados de qualquer tamanho e diminua quando seu trabalho for concluído para evitar pagar pela capacidade não utilizada. Você pode reduzir sua fatura comprometendo-se com um prazo definido e economizando até 75% usando as Instâncias Reservadas do Amazon EC2 ou executando seus clusters na capacidade computacional extra da AWS e economizando até 90% usando o EC2 Spot.
Comece a usar o Apache Spark na AWS criando uma conta hoje mesmo.
Próximas etapas na AWS
Obtenha acesso instantâneo ao nível gratuito da AWS.