in

Apache Spark – RDD

iterative operations on mapreduce

Conjuntos de datos distribuidos resistentes

Los conjuntos de datos distribuidos resistentes (RDD) son una estructura de datos fundamental de Spark. Es una colección distribuida inmutable de objetos. Cada conjunto de datos en RDD se divide en particiones lógicas, que se pueden calcular en diferentes nodos del clúster. Los RDD pueden contener cualquier tipo de objetos Python, Java o Scala, incluidas las clases definidas por el usuario.

Formalmente, un RDD es una colección de registros particionada de solo lectura. Los RDD se pueden crear mediante operaciones deterministas en datos en almacenamiento estable u otros RDD. RDD es una colección de elementos tolerantes a fallas que se pueden operar en paralelo.

Hay dos formas de crear RDD: paralelizando una colección existente en su programa de conductor, o hacer referencia a un conjunto de datos en un sistema de almacenamiento externo, como un sistema de archivos compartidos, HDFS, HBase o cualquier fuente de datos que ofrezca un formato de entrada Hadoop.

Spark hace uso del concepto de RDD para lograr operaciones MapReduce más rápidas y eficientes. Primero, analicemos cómo se llevan a cabo las operaciones de MapReduce y por qué no son tan eficientes.

El intercambio de datos es lento en MapReduce

MapReduce se adopta ampliamente para procesar y generar grandes conjuntos de datos con un algoritmo distribuido paralelo en un clúster. Permite a los usuarios escribir cálculos en paralelo, utilizando un conjunto de operadores de alto nivel, sin tener que preocuparse por la distribución del trabajo y la tolerancia a fallas.

Desafortunadamente, en la mayoría de los marcos actuales, la única forma de reutilizar datos entre cálculos (Ex – entre dos trabajos de MapReduce) es escribirlos en un sistema de almacenamiento estable externo (Ex – HDFS). Aunque este marco proporciona numerosas abstracciones para acceder a los recursos computacionales de un clúster, los usuarios aún quieren más.

Ambos Iterativo y Interactivo las aplicaciones requieren un intercambio de datos más rápido en trabajos paralelos. El intercambio de datos es lento en MapReduce debido a replicación, serialización, y disco IO. En cuanto al sistema de almacenamiento, la mayoría de las aplicaciones de Hadoop pasan más del 90% del tiempo realizando operaciones de lectura y escritura HDFS.

Operaciones iterativas en MapReduce

Reutilice los resultados intermedios en varios cálculos en aplicaciones de varias etapas. La siguiente ilustración explica cómo funciona el marco actual, mientras se realizan las operaciones iterativas en MapReduce. Esto genera gastos generales sustanciales debido a la replicación de datos, E / S de disco y serialización, lo que hace que el sistema sea lento.

Operaciones iterativas en MapReduce

Operaciones interactivas en MapReduce

El usuario ejecuta consultas ad-hoc en el mismo subconjunto de datos. Cada consulta realizará la E / S del disco en el almacenamiento estable, lo que puede dominar el tiempo de ejecución de la aplicación.

La siguiente ilustración explica cómo funciona el marco actual mientras se realizan consultas interactivas en MapReduce.

Operaciones interactivas en MapReduce

Uso compartido de datos con Spark RDD

El intercambio de datos es lento en MapReduce debido a replicación, serialización, y disco IO. La mayoría de las aplicaciones de Hadoop pasan más del 90% del tiempo realizando operaciones de lectura y escritura HDFS.

Al reconocer este problema, los investigadores desarrollaron un marco especializado llamado Apache Spark. La idea clave de la chispa es Resilient Datribuido Datasets (RDD); admite el cálculo de procesamiento en memoria. Esto significa que almacena el estado de la memoria como un objeto en los trabajos y el objeto se puede compartir entre esos trabajos. El intercambio de datos en la memoria es de 10 a 100 veces más rápido que la red y el disco.

Intentemos ahora descubrir cómo se llevan a cabo las operaciones iterativas e interactivas en Spark RDD.

Operaciones iterativas en Spark RDD

La ilustración que se muestra a continuación muestra las operaciones iterativas en Spark RDD. Almacenará los resultados intermedios en una memoria distribuida en lugar de almacenamiento estable (disco) y hará que el sistema sea más rápido.

Nota – Si la memoria distribuida (RAM) no es suficiente para almacenar resultados intermedios (estado del trabajo), entonces almacenará esos resultados en el disco.

Operaciones iterativas en Spark RDD

Operaciones interactivas en Spark RDD

Esta ilustración muestra operaciones interactivas en Spark RDD. Si se ejecutan diferentes consultas en el mismo conjunto de datos repetidamente, estos datos en particular se pueden mantener en la memoria para mejorar los tiempos de ejecución.

Operaciones interactivas en Spark RDD

De forma predeterminada, cada RDD transformado se puede volver a calcular cada vez que ejecuta una acción en él. Sin embargo, también puede persistir un RDD en la memoria, en cuyo caso Spark mantendrá los elementos en el clúster para un acceso mucho más rápido, la próxima vez que lo consulte. También es compatible con RDD persistentes en disco o replicados en varios nodos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

cambiar color pantallazos azules2

Ahora es posible cambiar el color de la pantalla azul (BSOD)

apple touch icon@2

En la práctica, ¿cuáles son los usos principales de la nueva sintaxis «rendimiento de» en Python 3.3?