¿Qué es un conjunto de datos distribuidos resilientes (RDD)?

Representación conceptual en 3D de diversas formas

Autores

James Holdsworth

Content Writer

Matthew Kosinski

Staff Editor

IBM Think

¿Qué es un conjunto de datos distribuidos resilientes (RDD)?

Un conjunto de datos distribuidos resilientes (RDD) es una colección inmutable y tolerante a fallos de elementos que se pueden distribuir en varios nodos de clúster para procesarlos en paralelo. Los RDD son la estructura de datos básica dentro del motor de procesamiento de datos de código abierto Apache Spark.

Spark se desarrolló para abordar las deficiencias de MapReduce, un modelo de programación para "fragmentar" una gran tarea de procesamiento de datos en tareas paralelas más pequeñas.

MapReduce puede ser lento e ineficiente. Requiere replicación (mantener varias copias de datos en diferentes ubicaciones), serialización (coordinar el acceso a los recursos utilizados por más de un programa) e intensas E/S (entrada/salida de almacenamiento en disco). 

Spark reduce específicamente el procesamiento innecesario. Mientras que MapReduce escribe datos intermedios en el disco, Spark utiliza RDD para almacenar en caché y calcular datos en la memoria. El resultado es que el motor de análisis de Spark puede procesar datos entre 10 y 100 veces más rápido que MapReduce1.

RDD y Apache Spark

Apache Spark es un motor de procesamiento de datos rápido, de código abierto y a gran escala que se utiliza a menudo para aplicaciones de machine learning (ML) e inteligencia artificial (IA). Spark puede considerarse una mejora de Hadoop, más específicamente, del marco de proceso de datos de Hadoop, MapReduce. 

Spark se escala distribuyendo flujos de trabajo de procesamiento de datos a través de grandes clústeres de ordenadores, con soporte integrado para computación paralela en múltiples nodos y tolerancia a fallos.

Incluye interfaces de programación de aplicaciones (API) para lenguajes de programación comunes de ciencia de datos e ingeniería de datos, incluidos Java, Python (PySpark), Scala y R.

Spark utiliza los RDD para gestionar y procesar los datos. Cada RDD se divide en particiones lógicas, que se pueden calcular en diferentes nodos del clúster simultáneamente. Los usuarios pueden realizar dos tipos de operaciones de RDD: transformaciones y acciones.

  • Las transformaciones son operaciones que crean un nuevo RDD.

  • Las acciones indican a Spark que aplique el cálculo y pase el resultado al controlador de Spark, el proceso que gestiona los trabajos de Spark.

Spark realiza transformaciones y acciones sobre los RDD en memoria, la clave de la velocidad de Spark. Spark también puede almacenar los datos en memoria o escribirlos en disco para añadir persistencia. 

Diseño 3D de bolas rodando por un circuito

Las últimas noticias + conocimientos de IA 


Descubra ideas y noticias de expertos sobre IA, nube y mucho más en el boletín semanal Think. 

Cómo funciona RDD

Los conjuntos de datos distribuidos resilientes son resilientes y están distribuidos. Eso significa:

Resiliente

Los RDD se denominan "resilientes" porque rastrean la información del linaje de datos para que los datos perdidos puedan reconstruirse si se produce un fallo, lo que hace que los RDD sean altamente tolerantes a fallos.

Como ejemplo de esta resiliencia de datos, considere un núcleo ejecutor que se pierde durante el procesamiento de una partición RDD. El controlador detectaría ese fallo y esa partición se reasignaría a un núcleo ejecutor diferente.

Distribuido

Los RDD se denominan "distribuidos" porque se dividen en grupos más pequeños de datos que se pueden distribuir a diferentes nodos de computación y procesar simultáneamente.

Además de estas dos características principales, RDD tiene otras características que contribuyen a su importancia y operaciones en Spark.

Cálculo en memoria

Muchos marcos de proceso de datos, y MapReduce en particular, deben realizar múltiples operaciones de lectura o escritura desde sistemas de almacenamiento externos, lo que ralentiza su rendimiento. RDD ayuda a Apache Spark a resolver este problema.

RDD reduce la E/S de disco mediante el uso de computación en memoria que almacena los resultados intermedios de las operaciones iterativas en memoria de acceso aleatorio (RAM). El uso de la computación y el almacenamiento en memoria puede admitir un acceso más rápido y un procesamiento casi en tiempo real.

Los RDD también pueden ayudar a acelerar el tiempo de entrenamiento de algoritmos de machine learning y el procesamiento de análisis de big data a gran escala. El uso de computación en memoria puede reducir el tiempo necesario para acceder al almacenamiento de datos.

Evaluación perezosa

En Spark, todas las transformaciones (operaciones aplicadas para crear un nuevo RDD) son "perezosas", es decir, que los datos no se cargan ni se calculan inmediatamente.

En cambio, las transformaciones se rastrean en un gráfico acíclico dirigido (DAG) y se ejecutan solo cuando hay un llamado a la acción específico para un programa controlador.

El programa controlador dirige la función principal y las operaciones para la computación en clúster en trabajos de Spark, como la agregación, la recopilación, el recuento o el almacenamiento de resultados en un sistema de archivos.

Entre las docenas de acciones y transformaciones posibles se incluyen addedByKey, countByKey, flatMap, groupByKey, reduceByKey y sortbyKey.

La evaluación perezosa ayuda a optimizar las canalizaciones de procesamiento de datos al eliminar el procesamiento innecesario y el recorte de cálculos innecesarios.

Particiones

Spark divide automáticamente los RDD en varios nodos para poder procesar enormes volúmenes de datos que no caben en un solo nodo. Para evitar los daños, cada partición se almacena en un nodo en lugar de distribuirse en varios nodos. 

RDD permite a las organizaciones definir la ubicación de las particiones informáticas para que las tareas puedan ejecutarse cerca de los datos requeridos. Esta ubicación ayuda a aumentar la velocidad de procesamiento.

Además, el número de ejecutores (ordenadores que realizan tareas asignadas por el controlador) en el clúster se puede aumentar para mejorar el paralelismo en el sistema. El nivel de paralelismo en el resultado depende de la cantidad de particiones en el RDD principal. 

Los RDD se pueden crear en particiones lógicas en un clúster para permitir operaciones paralelas en varios nodos. Los RDD se pueden crear a partir de varias fuentes de almacenamiento estables, como Amazon Web Services (AWS) S3, Hadoop Distributed File System (HDFS)Apache HBase y Cassandra. También se pueden crear a través de lenguajes de programación como Scala y Python.

AI Academy

¿Es la gestión de datos el secreto de la IA generativa?

Explore por qué los datos de alta calidad son esenciales para el uso satisfactorio de la IA generativa.

Persistencia

Spark RDD puede almacenar en caché conjuntos de datos en la memoria en todas las operaciones. Cada nodo puede almacenar las particiones que ha calculado en la memoria y reutilizarlas para acciones posteriores en el conjunto de datos o conjuntos de datos resultantes. Esta persistencia puede acelerar enormemente el procesamiento.

Spark también ofrece a los usuarios opciones de almacenamiento interactivo, lo que les da control sobre cómo se almacenan los datos. Los datos pueden almacenarse en la memoria, en el disco o en una combinación de ambos.

Inmutabilidad

Los RDD son inmutables, lo que significa que no se pueden modificar después de su creación. La inmutabilidad ayuda a que los datos permanezcan estables en el tiempo a lo largo de múltiples operaciones.

También hace que sea más fácil y seguro compartir datos entre múltiples procesos, y ayuda a proteger contra la corrupción que pueden causar las actualizaciones simultáneas de diferentes hilos. 

Aunque los RDD son inmutables, los usuarios pueden crear nuevos RDD aplicando transformaciones a los existentes, lo que permite actualizar los conjuntos de datos sin alterar los datos originales.

Capacidad para datos no estructurados

RDD puede procesar datos estructurados y no estructurados. Al procesar datos no estructurados, la información puede extraerse de múltiples tipos de bases de datos, flujos multimedia o archivos de texto sin necesidad de un esquema fijo ni de crear un DataFrame.

Dicho esto, los usuarios pueden crear DataFrames en Spark, lo que les permite beneficiarse de ciertas optimizaciones para mejorar el rendimiento.

Soluciones relacionadas
Software y soluciones de gestión de datos

Diseñe una estrategia de datos que elimine los silos, reduzca la complejidad y mejore la calidad de los datos para ofrecer experiencias excepcionales a clientes y empleados.

Explore las soluciones de gestión de datos
IBM watsonx.data

Watsonx.data le permite escalar el análisis y la IA con todos sus datos, residan donde residan, a través de un almacén de datos abierto, híbrido y controlado.

Descubra watsonx.data
Servicios de asesoramiento sobre datos y análisis

Desbloquee el valor de los datos empresariales con IBM Consulting y construya una organización impulsada por conocimientos que ofrezca ventajas empresariales.

Descubra los servicios de análisis
De el siguiente paso

Diseñe una estrategia de datos que elimine los silos, reduzca la complejidad y mejore la calidad de los datos para ofrecer experiencias excepcionales a clientes y empleados.

Explore las soluciones de gestión de datos Descubra watsonx.data
Nota a pie de página

1 Apache Spark. Apache Software Foundation. 20 de diciembre de 2024.