Início topics Sanar Vazamentos O que é Apache Spark?
O Apache Spark é um mecanismo de processamento de dados de software livre ultrarrápido para machine learning e aplicativos de IA
Conheça o IBM watsonx.data
Ilustração com colagem de pictogramas de nuvens, gráfico de pizza, pictogramas de gráficos
O que é o Apache Spark?

O Apache Spark é um mecanismo de processamento de dados de código aberto extremamente rápido para aplicações de aprendizado de máquina e IA, respaldado pela maior comunidade de código aberto em big data.

O Apache Spark (Spark) lida facilmente com conjuntos de dados em grande escala e é um sistema de cluster rápido e de uso geral adequado para o PySpark. Ele foi projetado para oferecer a velocidade computacional, a escalabilidade e a programabilidade necessárias para big data, especificamente para dados de streaming, dados gráficos, análise de dados, aprendizado de máquina, processamento de dados em grande escala e aplicações de inteligência artificial (IA) .

O mecanismo de análise do Spark processa dados de 10 a 100 vezes mais rápido do que algumas alternativas, como o Hadoop (link externo ao site ibm.com) para cargas de trabalho menores. Ele escala distribuindo fluxos de trabalho de processamento em grandes clusters de computadores, com paralelismo e tolerância a falhas integrados. Ele ainda inclui APIs para linguagens de programação populares entre analistas de dados e cientistas de dados, como Scala, Java, Python e R.

O Spark é frequentemente comparado ao Apache Hadoop e, especificamente, ao Hadoop MapReduce, o componente nativo de processamento de dados do Hadoop. A principal diferença entre o Spark e o MapReduce é que o Spark processa e mantém os dados na memória para as etapas subsequentes – sem gravar ou ler a partir do disco – o que resulta em velocidades de processamento significativamente mais rápidas. (Você encontrará mais informações sobre como o Spark se compara e complementa o Hadoop em outra parte deste artigo.)

O Spark foi desenvolvido em 2009 no AMPLab da UC Berkeley. Atualmente, ele é mantido pela Apache Software Foundation e possui a maior comunidade de código aberto em big data, com mais de 1.000 colaboradores. Ele também é incluído como um componente essencial de diversas ofertas comerciais de big data.

IA generativa e ML para empresas

Aprenda os principais benefícios da IA generativa e como as organizações podem incorporar IA generativa e aprendizado de máquina em seus negócios.

Ebook

Registre-se para o ebook sobre armazenamento de dados de IA

Como o Apache Spark funciona

O Apache Spark tem uma arquitetura hierárquica primária/secundária. O Spark Driver é o nó primário que controla o gerenciador de cluster, que gerencia os nós secundários e fornece os resultados dos dados ao cliente da aplicação.

Com base no código da aplicação, o Spark Driver gera o SparkContext, que funciona com o gerente de cluster – o gerenciador de cluster autônomo do Spark ou outros gerenciadores de cluster, como o Hadoop YARN, o Kubernetes ou o Mesos – para distribuir e monitorar a execução em todos os nós. Ele também cria conjuntos de dados distribuídos resilientes (RDDs), que são a chave para a incrível velocidade de processamento do Spark.

Conjunto de dados distribuídos resilientes (RDD)


Os conjuntos de dados distribuídos resilientes (RDDs) são coleções de elementos tolerantes a falhas que podem ser distribuídos entre vários nós em um cluster e trabalhados em paralelo. Os RDDs são uma estrutura fundamental no Apache Spark.

O Spark carrega dados fazendo referência a uma fonte de dados ou paralelizando uma coleção existente com o método de paralelização SparkContext de armazenamento de dados em cache em um RDD para processamento. Depois que os dados são carregados em um RDD, o Spark realiza transformações e ações em RDDs na memória – a chave para a velocidade do Spark. O Spark também armazena os dados na memória, a menos que o sistema fique sem memória ou o usuário decida gravar os dados no disco para persistência.

Cada conjunto de dados em um RDD é dividido em partições lógicas, que podem ser calculadas em diferentes nós do cluster. E os usuários podem executar dois tipos de operações de RDD: transformações e ações. As transformações são operações realizadas para criar um novo RDD. As ações são usadas para instruir o Apache Spark a realizar cálculos e enviar o resultado de volta para o driver.

O Spark oferece suporte a uma variedade de ações e transformações nos RDDs. Essa distribuição é feita pelo Spark, para que os usuários não precisem se preocupar em calcular a distribuição correta.

Gráfico Acíclico Dirigido (DAG)


Ao contrário do processo de execução em duas etapas do MapReduce, o Spark cria um DAG (gráfico acíclico dirigido) para programar tarefas e a orquestração de nós de trabalho no cluster. Como o Spark atua e transforma os dados nos processos de execução de tarefas, o agendador DAG facilita a eficiência orquestrando os nós de trabalho em todo o cluster. Esse rastreamento de tarefas possibilita a tolerância a falhas, pois reaplica as operações registradas nos dados de um estado anterior.

DataFrames e conjuntos de dados


Além dos RDDs, o Spark lida com dois outros tipos de dados: DataFrames e conjuntos de dados.

DataFrames são as interfaces de programação de aplicações (APIs) estruturadas mais comuns e representam uma tabela de dados com linhas e colunas. Embora o RDD tenha sido um recurso crítico para o Spark, ele agora está no modo de manutenção. Devido à popularidade da Biblioteca de Aprendizado de Máquina (MLlib) do Spark, os DataFrames assumiram o papel de principal API para MLlib (um conjunto de algoritmos de aprendizado de máquina para escalabilidade, além de ferramentas para seleção de recursos e criação de pipelines de ML). É importante observar isso ao usar a API MLlib, pois os DataFrames fornecem uniformidade entre as diferentes linguagens, como Scala, Java, Python e R.

Os conjuntos de dados são uma extensão dos DataFrames que oferecem uma interface de programação orientada a objetos e com segurança de tipos. Os conjuntos de dados são, por padrão, uma coleção de objetos JVM com tipos definidos, diferente dos DataFrames.

O Spark SQL permite que os dados sejam consultados a partir de DataFrames e armazenamentos de dados SQL, como o Apache Hive. Quando executadas em outra linguagem, as consultas do Spark SQL retornam um DataFrame ou conjunto de dados.

Spark Core


Spark Core é a base para todo o processamento de dados paralelo e lida com agendamento, otimização, RDD e abstração de dados. O Spark Core fornece a base funcional para as bibliotecas Spark, Spark SQL, Spark Streaming, a biblioteca de aprendizado de máquina MLlib e o processamento de dados gráficos GraphX. O Spark Core e o gerenciador de cluster distribuem os dados pelo cluster do Spark e os abstraem. Essa distribuição e abstração tornam o manuseio de big data muito rápido e fácil de usar.

APIs do Spark


O Spark inclui uma variedade de interfaces de programação de aplicações (APIs) para tornar o poder do Spark acessível ao maior número de pessoas. O Spark SQL permite uma interação com os dados RDD de uma maneira relacional. O Spark também tem uma API bem documentada para Scala, Java, Python e R. A API de cada linguagem no Spark tem suas nuances específicas na forma como lida com os dados. Os RDDs, DataFrames e conjuntos de dados estão disponíveis na API de cada linguagem. Com APIs para uma variedade de linguagens, o Spark torna o processamento de big data acessível a grupos mais diversos de pessoas com experiência em desenvolvimento, ciência de dados, engenharia de dados e estatística.

Vantagens do Apache Spark

O Spark acelera o desenvolvimento e as operações de várias maneiras. O Spark ajudará as equipes a:

  • Acelerar o desenvolvimento de aplicações: os modelos de programação SQL e Streaming do Apache Spark com o apoio da MLlib e do GraphX facilitam a criação de aplicações que exploram o aprendizado de máquina e a análise de gráficos.

  • Inovar com mais rapidez: as APIs oferecem facilidade de uso na manipulação de dados semiestruturados e na transformação de dados.

  • Otimizar com tecnologias abertas: a OpenPOWER Foundation permite a aceleração GPU, CAPI Flash, RDMA, FPGA e inovação de aprendizado de máquina para otimizar o desempenho das cargas de trabalho do Apache Spark.

  • Processar com mais rapidez: o Spark pode ser 100x mais rápido do que o Hadoop (link externo ao site ibm.com) para cargas de trabalho menores devido ao seu avançado mecanismo de computação in-memory e seu armazenamento de dados em disco.

  • Acelerar o acesso à memória: o Spark pode ser usado para criar um grande espaço de memória para processamento de dados, permitindo que os usuários mais avançados acessem dados por meio de interfaces usando Python, R e Spark SQL.

Apache Spark e aprendizado de máquina

O Spark possui várias bibliotecas que estendem os recursos para machine learning, inteligência artificial (IA) e processamento de fluxo.

Apache Spark MLlib

 

Um dos recursos críticos do Apache Spark são as habilidades de machine learning disponíveis no Spark MLlib. O Apache Spark MLlib fornece uma solução pronta para uso para fazer classificação e regressão, filtragem colaborativa, armazenamento em cluster, álgebra linear distribuída, árvores de decisão, florestas aleatórias, árvores com aumento de gradiente, mineração de padrão frequente, métricas de avaliação e estatísticas. Os recursos do MLlib, combinados com os vários tipos de dados que o Spark pode manipular, tornam o Apache Spark uma ferramenta indispensável de Big Data.

Spark GraphX

 

Além de ter recursos de API, o Spark possui o Spark GraphX, uma nova adição ao Spark projetada para resolver problemas de gráficos. O GraphX é uma abstração de gráfico que estende RDDs para gráficos e computação paralela a gráficos. O Spark GraphX integra-se com bancos de dados gráficos que armazenam informações de interconectividade ou redes de informações de conexão, como a de uma rede social.

Spark Streaming

 

O Spark Streaming é uma extensão da API principal do Spark que permite o processamento de ajuste de escala que seja tolerante a falhas de fluxos de dados ativos. À medida que o Spark Streaming processa dados, ele pode fornecer dados para sistemas de arquivos, bancos de dados e painéis ativos para análises de streaming em tempo real com machine learning e algoritmos de processamento de gráficos do Spark. Construído com o mecanismo Spark SQL, o Spark Streaming também permite processamento em lote incremental que resulta em processamento mais rápido de dados transmitidos.

Links relacionados

Hadoop

Análise de Big Data

Spark vs. Apache Hadoop and MapReduce

"Spark vs. Hadoop" é uma busca feita com frequência na web, mas, como observado acima, o Spark é mais um aprimoramento do Hadoop e, mais especificamente, do componente nativo de processamento de dados do Hadoop, o MapReduce. Na verdade, o Spark foi desenvolvido na estrutura MapReduce e, atualmente, a maioria das distribuições do Hadoop inclui o Spark.

Como o Spark, o MapReduce permite que os programadores escrevam aplicações que processam grandes conjuntos de dados mais rapidamente ao processar partes do conjunto de dados em paralelo em grandes clusters de computadores. Mas enquanto o MapReduce processa dados em disco, adicionando tempos de leitura e escrita que retardam o processamento, o Spark realiza os cálculos na memória, o que é muito mais rápido. Como resultado, o Spark pode processar dados até 100 vezes mais rápido do que o MapReduce.

As APIs integradas do Spark para várias linguagens o tornam mais prático e acessível para desenvolvedores do que o MapReduce, que tem reputação de ser difícil de programar. Ao contrário do MapReduce, o Spark pode executar aplicações de processamento de stream em clusters Hadoop usando YARN, a estrutura de gerenciamento de recursos e agendamento de trabalhos do Hadoop. Conforme mencionado acima, o Spark adiciona os recursos de MLlib, GraphX e SparkSQL. E o Spark pode lidar com dados de outras fontes de dados fora da aplicação Hadoop, incluindo o Apache Kafka.

Caso contrário, o Spark é compatível e complementar ao Hadoop. Ele pode processar dados do Hadoop, incluindo dados do HDFS (o sistema de arquivos distribuídos do Hadoop), do HBase (um banco de dados não relacional executado em HDFS), do Apache Cassandra (uma alternativa NoSQL ao HDFS) e do Hive (um data warehouse baseado em Hadoop).

Soluções relacionadas
IBM Analytics Engine

O Analytics Engine é um serviço combinado do Apache Spark e do Apache Hadoop para a criação de aplicações de análises.

Explore o IBM Analytics Engine
IBM Watson Studio

Crie confiança e escale a IA em ambientes na nuvem. Capacite cientistas de dados, desenvolvedores e analistas para criar, executar e gerenciar modelos de IA e otimizar decisões.

Conheça o IBM Watson Studio
Apache Spark no IBM Power

Conte com um framework de computação em cluster de código aberto otimizado para o processamento de dados extremamente rápido e em grande escala.

Explore o Apache Spark no IBM Power
IBM Spectrum Conductor

Implemente com confiança o IBM Spectrum Conductor e outros serviços para um ambiente empresarial de multilocatários, tanto no local quanto na nuvem.

Explore o IBM Spectrum Conductor
Soluções de data lake

Potencialize suas aplicações, análises de dados e IA com qualquer dado em um data lake em nuvem aberta.

Conheça as soluções
Recursos Explore a análise de big data com o Apache Spark

Saiba como o Spark ajuda a simplificar a tarefa desafiadora e computacionalmente intensiva de processar grandes volumes de dados em tempo real.

Hadoop vs. Spark: qual é a diferença?

Saiba mais sobre as respectivas arquiteturas do Hadoop e do Spark e como essas estruturas de big data se comparam em diferentes cenários.

IA generativa e ML para empresas

Aprenda os principais benefícios da IA generativa e como as organizações podem incorporar IA generativa e aprendizado de máquina em seus negócios.

Veja as etapas detalhadas que um desenvolvedor pode seguir para concluir uma ou mais tarefas

Esses tutoriais fornecem instruções práticas que ajudam os desenvolvedores a aprender como usar as tecnologias em seus projetos.

Migração de aplicações legadas para o Apache Spark

Saiba como transformar sistemas centrais com o Apache Spark. Ganhe agilidade, desempenho e acesso a um ecossistema mais amplo.

Dê o próximo passo

Escale cargas de trabalho de IA para todos os seus dados, em qualquer lugar, com o IBM watsonx.data, um armazenamento de dados feito sob medida, construído em uma arquitetura aberta de data lakehouse.

Explore o watsonx.data Agende uma demonstração em tempo real