Spark (II) - Características principales
mayo 09, 2014
Seguimos con la serie Spark. A continuación tenéis los post publicados:
Spark (V) - Desarrollando programas en Spark. Empezando a programar.
Spark (VI) - Monitorización de Spark
Spark (VII) - Ecosistema alrededor de Spark
Hoy veremos las características principales que hacen a Spark tan atractivo.
Resilient Distributed Dataset
En Spark a diferencia de Hadoop, no utilizaremos una colección de datos distribuidos sino que usaremos los RDDs (Resisilient Distribuited Datasets). Normalmente no suelo dar la chapa sobre en que consiste esto a bajo nivel, pero ya que estamos en el blog lo dejo aquí por escrito:
Son colecciones lógicas, inmutables y particionadas de registros a lo largo del cluster que pueden ser reconstruidas si alguna partición se pierde (no necesitan ser materializadas pero si reconstruidas para mantener el almacenamiento estable). Se crean mediante la transformación de datos utilizando para ello transformaciones (filtros, joins, Group by...). Por otra parte permite cachear los datos mediante transformaciones como Reduce, Collect, count, save...
Los RDD son tolerantes a fallos, para ello mantiene una cosa llamada el "lineage" del RDD. Este "lineage" permite que los RDDs se reconstruyan en caso de que una porción de datos se pierda.
Por tanto, los beneficios de utilizar RDD´s son varios:
· La consistencia se vuelve más sencilla gracias a la inmutabilidad.
· Tolerancia a fallos con bajo coste (gracias al "lineage" mantenemos checkpoints de los datos).
· A pesar de ser un modelo restringido a una serie de casos de uso por defecto, gracias a RDDs se puede utilizar Spark para un cantidad de aplicaciones muy variadas.
Suelo contar que yo me imagino los RDD como sacos de datos en memoria en los que si se pierde parte de los datos del saco, el saco se adapta a la cantidad de datos que tenga dentro.
Suelo contar que yo me imagino los RDD como sacos de datos en memoria en los que si se pierde parte de los datos del saco, el saco se adapta a la cantidad de datos que tenga dentro.
Operaciones en RDDs
Análisis Interactivo de Datos
Una de las características más útiles es el Shell interactivo que permite a un usuario utilizar las capacidades de Spark inmediatamente (no se necesita un IDE o compilar el código). La Shell es una herramienta que se utiliza para la exploración de datos interactivamente, que nos permitirá probar porciones de la aplicación que estemos desarrollando.
Spark puede leer y escribir datos desde y hasta HDFS. Lo bueno es que nos permite jugar con APIs en Java, Scala y Python para aplicaciones "stand-alone".
Batch Processing más Rápido
Los primeros despliegues de Spark se enfocaron en aumentar el rendimiento de las aplicaciones MapReduce existentes. Recodemos que MapReduce en la actualidad es un framework genérico de ejecución paralela de aplicaciones y no es exclusivo ni una implementación propietaria del core de Hadoop. Por lo tanto Spark proporciona también MapReduce que puede llegar a ser más eficiente gracias al uso de la memoria (mientras utilizará "lineage" para recuperar los fallos en caso de que fuese necesario).
Algoritmos Iterativos
Spark permite a los usuarios y a las aplicaciones especificar el cacheo de un dataset mediante la operación cache(). Esto significa que nuestra aplicación puede acceder a la memoria RAM en vez de al disco, lo cual aumenta de manera espectacular el rendimiento en algoritmos iterativos ya que pueden acceder acceder al mismo dataset repetidamente. Ese caso de uso cubre un gran número de aplicaciones, como pueden ser las aplicaciones orientadas a machine learning o los algoritmos gráficos que son iterativos por naturaleza.
Puedes ver más sobre esto en la web oficial de Spark.
Procesamiento de Streams en Tiempo Real
Dado que las operaciones realizadas los sistemas de análisis de datos poseen una latencia baja, es natural extender el motor hacia streams de datos en tiempo real. Spark tiene un API que nos permite trabajar con estos streams de datos y que además tienen una ventaja diferencial: podemos mezclar streams en tiempo real con programas Batch.
1 comentarios
genial
ResponderEliminarSé respetuoso/a, en este blog caben todo tipo de opiniones con respeto y serenidad.