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
imagem abstrata nas cores preto e azul
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, apoiado pela maior comunidade de software livre em big data.

Apache Spark (Spark) é um mecanismo de processamento de dados de software livre para grandes conjuntos de dados. Ele foi projetado para fornecer velocidade computacional, escalabilidade e programabilidade necessárias para Big Data, especificamente para aplicativos de streaming de dados, dados de gráficos, machine learning e inteligência artificial (IA).

O mecanismo de análise do Spark processa dados de 10 a 100 vezes mais rápido que as alternativas. Ele escala distribuindo o trabalho de processamento em grandes clusters de computadores, com paralelismo integrado e tolerância a falhas. Inclui até APIs para linguagens de programação populares entre analistas e cientistas de dados, incluindo Scala, Java, Python e R.

O Spark é frequentemente comparado ao Apache Hadoop e, especificamente, ao 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 do disco, o que resulta em velocidades de processamento drasticamente mais rápidas. (Em outras partes deste artigo, você encontrará mais informações sobre como o Spark se compara ao Hadoop e o complementa.)

O Spark foi desenvolvido em 2009 na UC Berkeley. Hoje, é mantido pela Apache Software Foundation e possui a maior comunidade de software livre em big data, com mais de 1.000 colaboradores. Também está incluído como um componente central de várias soluções comerciais de big data.

Construir o melhor data lake significa escolher o armazenamento de objeto certo: uma área em que o Apache Spark pode ajudar consideravelmente.

Leia o e-book

Como funciona o Apache Spark

O Apache Spark tem uma arquitetura hierárquica mestre/escravo. O Spark Driver é o nó principal que controla o gerenciador de cluster, que gerencia os nós de trabalho (escravos) e fornece resultados de dados para o aplicativo cliente.

Com base no código do aplicativo, o Spark Driver gera o SparkContext, que funciona com o gerenciador de cluster, o Standalone Cluster Manager do Spark ou outros gerenciadores de cluster como Hadoop YARN, Kubernetes ou Mesos, para distribuir e monitorar a execução entre os nós. Ele também cria conjuntos de dados distribuídos resilientes (RDDs), que são a chave para a notável velocidade de processamento do Spark.

Conjunto de dados resilientes e distribuídos ou RDD

 

Os conjuntos de dados distribuídos resilientes (RDDs) são coleções tolerantes a falhas de elementos 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 referenciando uma fonte de dados ou paralelizando uma coleção existente com o método de tornar paralelo do SparkContext em um RDD para processamento. Depois que os dados são carregados em um RDD, o Spark executa transformações e ações em RDDs na memória, que é 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 computadas em diferentes nós do cluster. Além disso, os usuários podem realizar dois tipos de operações RDDtransformações e açõesTransformações são operações aplicadas para criar um novo RDDAs ações são usadas para instruir o Apache Spark a aplicar a computação e passar o resultado de volta para o driver.

O Spark suporta uma variedade de ações e transformações em RDDs. Essa distribuição é feita pelo Spark, portanto, os usuários não precisam se preocupar em calcular a distribuição correta.

Gráfico Acíclico Dirigido (DAG)

 

Ao contrário do processo de execução de dois estágios no MapReduce, o Spark cria um gráfico acíclico dirigido (DAG) para agendar tarefas e a orquestração de nós de trabalho no cluster. À medida que o Spark atua e transforma dados nos processos de execução de tarefas, o planejador DAG facilita a eficiência orquestrando os nós de trabalho no cluster. Esse rastreamento de tarefas possibilita a tolerância a falhas, pois reaplica as operações gravadas aos dados de um estado anterior.

DataFrames e Datasets

 

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

DataFrames são as interfaces de programação de aplicativos (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, agora ele está em modo de manutenção. Devido à popularidade da Biblioteca de machine learning (MLlib) do Spark, os DataFrames assumiram o papel principal como a API principal para MLlib. Isso é importante observar ao usar a API MLlib, pois os DataFrames fornecem uniformidade entre as diferentes linguagens, como Scala, Java, Python e R.

Datasets são uma extensão de DataFrames que fornecem uma interface de programação orientada a objeto e segura. Os conjuntos de dados são, por padrão, uma coleção de objetos JVM fortemente tipados, ao contrário dos DataFrames.

O Spark SQL permite que os dados sejam consultados de DataFrames e armazenamentos de dados SQL, como o Apache Hive. Consultas Spark SQL retornam um DataFrame ou Dataset quando são executadas em outro idioma.

Spark Core

 

O Spark Core é a base para todo o processamento paralelo de dados 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 machine learning MLlib e processamento de dados gráficos GraphX. O Spark Core e o gerenciador de cluster distribuem dados pelo cluster 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 aplicativos (APIs) para levar o poder do Spark ao público mais amplo. O Spark SQL permite a interação com dados RDD de maneira relacional. O Spark também tem uma API bem documentada para Scala, Java, Python e R. Cada API de linguagem no Spark tem suas nuances específicas na forma como lida com os dados. RDDs, DataFrames e Datasets estão disponíveis em cada API de linguagem. Com APIs para uma variedade de idiomas, 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 e estatística.

Produtos em destaque

Mecanismo de análise

Apache Spark e machine learning

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 e MapReduce

"Spark vs. Hadoop" é um termo pesquisado com frequência na Web, mas, conforme observado acima, Spark é mais um aprimoramento do Hadoop e, mais especificamente, do componente de processamento de dados nativo do Hadoop, MapReduce. Na verdade, o Spark é desenvolvido na estrutura MapReduce e, hoje, a maioria das distribuições do Hadoop inclui o Spark.

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

As APIs integradas do Spark para vários idiomas o tornam mais prático e acessível para desenvolvedores do que o MapReduce, que tem a reputação de ser difícil de programar. Ao contrário do MapReduce, o Spark pode executar aplicativos de processamento de fluxo em clusters Hadoop usando YARN, a estrutura de planejamento de tarefas e gerenciamento de recursos do Hadoop. Conforme observado acima, o Spark adiciona os recursos de MLlib, GraphX e SparkSQL. E o Spark pode lidar com dados de outras fontes de dados fora do aplicativo Hadoop, incluindo Apache Kafka.

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

Soluções relacionadas
AIOps

Saiba sobre o AIOps, uma área que potencializa a análise de dados, a inteligência artificial e outras tecnologias para tornar as operações de TI mais eficientes e eficazes.

Conheça o AIOps
IBM Spectrum Conductor

Implemente com confiança o IBM Spectrum Conductor e outros serviços para um ambiente corporativo de diversos locatários, no local e na cloud.

Conheça o IBM Spectrum Conductor
IBM Analytics Engine

O Analytics Engine é um serviço combinado do Apache Spark e do Apache Hadoop para criar aplicativos de análise de dados.

Conheça o IBM Analytics Engine
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
Dê o próximo passo

Spark é uma ferramenta poderosa para incluir em uma solução de dados corporativos para ajudar na análise de big data. Ele também se encaixa bem com as soluções existentes de big data da IBM.

O IBM Spectrum Conductor é uma plataforma de diversos locatários para implementar e gerenciar outras estruturas de aplicativos Apache Spark em um cluster comum compartilhado de recursos. O Spectrum Conductor oferece gerenciamento de carga de trabalho, monitoramento, alerta, relatórios e diagnósticos e pode executar várias versões atuais e diferentes do Spark e outras estruturas simultaneamente. Os usuários podem implementar e manter facilmente o Apache Spark com uma distribuição Spark integrada.

Conheça o IBM Spectrum Conductor hoje mesmo