O que é um conjunto de dados distribuídos resilientes (RDD)?

Renderização conceitual em 3D de várias formas

Autores

James Holdsworth

Content Writer

Matthew Kosinski

Staff Editor

IBM Think

O que é um conjunto de dados distribuídos resilientes (RDD)?

Um conjunto de dados distribuídos resilientes (RDD) é uma coleção imutável e tolerante a falhas de elementos que podem ser distribuídos em vários nós de clusters para serem processados em paralelo. Os RDDs são a estrutura de dados básica dentro do mecanismo de processamento de dados de código aberto Apache Spark.

O Spark foi desenvolvido para lidar com deficiências no MapReduce, um modelo de programação para "reduzir" uma grande tarefa de processamento de dados em tarefas paralelas menores.

O MapReduce pode ser lento e ineficiente. Exige replicação (manutenção de várias cópias de dados em diferentes locais), serialização (coordenação do acesso aos recursos usados por mais de um programa) e uso intenso de E/S (entrada/saída de armazenamento em disco). 

O Spark reduz especificamente o processamento desnecessário. Enquanto o MapReduce escreve dados intermediários em disco, o Spark usa RDDs para armazenar em cache e calcular dados in-memory. O resultado é que o analytics engine do Spark pode processar dados de 10 a 100 vezes mais rápido do que o MapReduce.1

RDD e Apache Spark

O Apache Spark é um mecanismo de processamento de dados rápido, de código aberto e em grande escala frequentemente usado para aplicações de aprendizado de máquina (ML) e inteligência artificial (IA). O Spark pode ser visto como uma melhoria em relação ao Hadoop, mais especificamente, em relação ao framework nativo de processamento de dados do Hadoop, o MapReduce. 

O Spark é escalonado ao distribuir fluxos de trabalho de processamento de dados em grandes clusters de computadores, com compatibilidade integrada com computação paralela em vários nós e tolerância a falhas.

Ele inclui interfaces de programação de aplicativos (APIs) para linguagens de programação comuns de ciência de dados e engenharia de dados, incluindo Java™, Python (PySpark), Scala e R.

O Spark usa RDDs para gerenciar e processar dados. Cada RDD é dividido em partições lógicas, que podem ser calculadas em diferentes nós de clusters simultaneamente. Os usuários podem realizar dois tipos de operações de RDD: transformações e ações.

  • As transformações são operações que criam um novo RDD.

  • As ações instruem o Spark a aplicar cálculos e enviar o resultado de volta para o driver do Spark, o processo que gerencia os trabalhos do Spark.

O Spark realiza transformações e ações em RDDs in-memory, o que é fundamental para a velocidade do Spark. O Spark também pode armazenar dados in-memory ou gravar os dados no disco para persistência adicional. 

Projeto 3D de bolas rolando em uma pista

As últimas notícias e insights sobre IA 


Descubra insights selecionados por especialistas e notícias sobre IA, nuvem e outros assuntos no boletim informativo semanal Think. 

Como o RDD funciona

Os conjuntos de dados distribuídos resilientes são resilientes e distribuídos. Isso quer dizer que:

Resiliente

Os RDDs são chamados de "resilientes" porque rastreiam as informações da linhagem de dados para que os dados perdidos possam ser reconstruídos em caso de falha, tornando os RDDs altamente tolerantes a falhas.

Como exemplo dessa resiliência de dados, considere um núcleo executor que é perdido durante o processamento de uma partição de RDD. O driver detectaria essa falha, e essa partição seria reatribuída a um núcleo executor diferente.

Distribuídos

Os RDDs são chamados de "distribuídos" porque são divididos em grupos menores de dados, que podem ser distribuídos para diferentes nós de computação e processados simultaneamente.

Além dessas duas funcionalidades principais, o RDD tem outras que contribuem para sua importância e operações no Spark.

Computação in-memory

Muitos frameworks de processamento de dados (e o MapReduce em particular) devem executar várias operações de leitura ou gravação a partir de sistemas de armazenamento externos, retardando seu desempenho. O RDD ajuda o Apache Spark a resolver esse problema.

O RDD reduz a E/S de disco usando computação in-memory, que armazena resultados intermediários de operações iterativas na memória de acesso aleatório (RAM). O uso de computação e armazenamento in-memory pode ser compatível com um acesso mais rápido e processamento quase em tempo real.

Os RDDs também podem ajudar a acelerar o tempo de treinamento para algoritmos de aprendizado de máquina e o processamento de análise de big data em grande escala. O uso de computação in-memory reduzir o tempo necessário para acessar o armazenamento de dados.

Avaliação preguiçosa

No Spark, todas as transformações (operações aplicadas para criar um novo RDD) são "preguiçosas", o que significa que os dados não são carregados ou computados imediatamente.

Em vez disso, as transformações são rastreadas em um gráfico acíclico direcionado (DAG) e executadas somente quando há uma chamada à ação específica para um programa de motivação.

O programa de motivação direciona a função e as operações primárias para computação em clusters em trabalhos do Spark, como agregação, coleta, contagem ou salvamento da saída em um sistema de arquivos.

Dezenas de ações e transformações possíveis incluem aggregateByKey, countByKey, flatMap, groupByKey, reduceByKey e sortbyKey.

A avaliação preguiçosa ajuda a otimizar pipelines de processamento de dados, ao eliminar processamento desnecessário e reduzir cálculos desnecessários.

Particionamento

O Spark particiona automaticamente os RDDs em vários nós para que ele possa processar grandes volumes de dados que não caberiam em um único nó. Para ajudar a evitar a corrupção, cada partição única é armazenada em um nó em vez de distribuída entre vários nós. 

O RDD permite que as organizações definam o posicionamento de partições de computação para que as tarefas possam ser executadas próximas aos dados necessários. Esse posicionamento ajuda a aumentar a velocidade de processamento.

Além disso, o número de executores (computadores que executam tarefas atribuídas pela motivação) no cluster pode ser aumentado para melhorar o paralelismo no sistema. O nível de paralelismo na saída depende da quantidade de partições no RDD pai. 

RDDs podem ser criados em partições lógicas em um cluster para permitir operações paralelas em vários nós. Os RDDs podem ser criados a partir de várias fontes de armazenamento estáveis, como Amazon Web Services (AWS) S3, Hadoop Distributed File System (HDFS), Apache HBase e Cassandra. Eles também podem ser criados por meio de linguagens de programação como Scala e Python.

AI Academy

O gerenciamento de dados é o segredo para a IA generativa?

Explore por que é essencial ter dados de alta qualidade para utilizar a IA generativa com qualidade.

Persistência

O Spark RDD pode armazenar em cache conjuntos de dados in-memory em todas as operações. Cada nó pode armazenar as partições que calculou in-memory e reutilizá-las para ações subsequentes no conjunto de dados ou nos conjuntos de dados resultantes. Essa persistência pode acelerar muito o processamento.

O Spark também oferece aos usuários opções de armazenamento interativo, dando-lhes controle sobre como os dados são armazenados. Os dados podem ser armazenados in-memory, em disco ou em uma mistura de ambos.

Imutabilidade

Os RDDs são imutáveis, o que significa que não podem ser modificados após a criação. A imutabilidade ajuda os dados a permanecerem estáveis ao longo do tempo em diversas operações.

Ela também torna mais fácil e seguro compartilhar dados entre vários processos, e ajuda a proteger contra corrupção, que pode ser causada por atualizações simultâneas de diferentes encadeamentos. 

Embora os RDDs sejam imutáveis, os usuários podem criar novos RDDs aplicando transformações aos existentes, o que permite que os conjuntos de dados sejam atualizados sem alterar os dados originais.

Capacidade para dados não estruturados

O RDD pode processar dados não estruturados e estruturados . Ao processar dados não estruturados, as informações podem ser extraídas de vários tipos de bancos de dados, fluxos de mídia ou arquivos de texto sem a necessidade de um esquema fixo ou da criação de um DataFrame.

Dito isso, os usuários podem criar DataFrames no Spark, o que permite que eles aproveitem certas otimizações para melhorar o desempenho.

Soluções relacionadas
Software e soluções de gerenciamento de dados

Crie uma estratégia de dados que elimine silos de dados, reduza a complexidade e melhore a qualidade de dados para proporcionar experiências excepcionais para clientes e funcionários.

Explore soluções de gerenciamento de dados
IBM watsonx.data™

O watsonx.data permite escalar a análise de dados e a IA com todos os seus dados, onde quer que estejam, por meio de um armazenamento de dados aberto, híbrido e governado.

Conheça o watsonx.data
Serviços de consultoria de dados e análise de dados

Libere o valor dos dados empresariais com a IBM Consulting, construindo uma organização baseada em insights que ofereça vantagens para os negócios.

Conheça os serviços de análise de dados
Dê o próximo passo

Crie uma estratégia de dados que elimine silos de dados, reduza a complexidade e melhore a qualidade de dados para proporcionar experiências excepcionais para clientes e funcionários.

Explore soluções de gerenciamento de dados Conheça o watsonx.data
Nota de rodapé

1 Apache Spark™, Apache Software Foundation, 20 de dezembro de 2024.