Spark es un framework para computación distribuida que introduce el concepto de Resilient Distributed Datasets (RDDs). Los RDDs permiten compartir datos entre operaciones de forma eficiente mediante transformaciones deterministas sobre datos almacenados de forma estable o sobre otros RDDs. Spark evalúa los RDDs de forma perezosa y proporciona mecanismos para recuperar los datos mediante el linaje de las transformaciones aplicadas cuando hay fallos. Las evaluaciones muestran mejoras de velocidad de hasta 20 veces frente a Hadoop en aplicaciones iterativas de machine learning.
Este documento presenta una introducción a Hadoop y sus componentes clave. Explica brevemente conceptos de Big Data y NoSQL, y describe los módulos principales de Hadoop como HDFS, MapReduce, Pig, Hive y HBase, destacando sus funcionalidades para el almacenamiento y procesamiento de grandes volúmenes de datos de forma distribuida.
Este documento trata sobre MapReduce en Hadoop. Explica cómo se implementa MapReduce en Java, incluyendo las clases necesarias para los mappers, reducers y el driver. También cubre temas como la serialización, los formatos de entrada y salida, y cómo compilar y ejecutar trabajos MapReduce.
Este documento proporciona una introducción a Big Data y MapReduce. Explica conceptos clave como las 5 V del Big Data, fuentes comunes de datos masivos, y los retos tecnológicos asociados con el procesamiento de grandes cantidades de datos. También describe el modelo de programación MapReduce, incluyendo ejemplos como WordCount y Grep distribuido.
En esta presentación se incentiva el desarrollo de aplicaciones para la resolución de problemas comunes de hoy en día que implican el manejo de grandes volúmenes de información, desde el enfoque de Big Data.
Se propone la combinación de OpenStack y Hadoop para apoyar el desarrollo de soluciones, que permitan extraer información valiosa a partir de grandes volúmenes de datos.
El documento presenta una introducción a Hadoop, incluyendo su instalación, arquitectura, HDFS y MapReduce. Explica que Hadoop es una implementación de código abierto de MapReduce para procesar grandes cantidades de datos en clusters. Describe las características clave de Hadoop como su bajo coste, escalabilidad y tolerancia a fallos.
Este documento presenta una introducción a Hadoop, incluyendo qué es MapReduce, HDFS, y Hadoop. Explica que Hadoop es un framework para almacenar y procesar grandes volúmenes de datos usando hardware de bajo costo. Describe la arquitectura de Hadoop, incluyendo el jobtracker, tasktracker y HDFS. También presenta un ejemplo de cómo construir un cluster Hadoop y ejecutar un trabajo.
Hadoop: MapReduce para procesar grandes cantidades de datosRaul Ochoa
Este documento presenta una introducción a Hadoop y MapReduce. Explica que Hadoop es un framework de código abierto para procesar grandes cantidades de datos de forma distribuida a través de clusters de computadoras. Describe los componentes clave de Hadoop como MapReduce, HDFS y subproyectos como Pig, Hive y HBase. Finalmente, incluye una sección de demostración para aplicar los conceptos aprendidos.
El documento describe el modelo de datos BigTable de Google. BigTable es un sistema de almacenamiento de datos distribuido y de alto rendimiento construido sobre Google File System. Almacena datos en tablas multidimensionales divididas en "tabletas" de 100-200 MB almacenadas en nodos. Esto permite escalabilidad horizontal al agregar nodos y tolerancia a fallos si un nodo falla.
Este documento presenta una introducción a Hadoop y sus componentes clave. Explica brevemente conceptos de Big Data y NoSQL, y describe los módulos principales de Hadoop como HDFS, MapReduce, Pig, Hive y HBase, destacando sus funcionalidades para el almacenamiento y procesamiento de grandes volúmenes de datos de forma distribuida.
Este documento trata sobre MapReduce en Hadoop. Explica cómo se implementa MapReduce en Java, incluyendo las clases necesarias para los mappers, reducers y el driver. También cubre temas como la serialización, los formatos de entrada y salida, y cómo compilar y ejecutar trabajos MapReduce.
Este documento proporciona una introducción a Big Data y MapReduce. Explica conceptos clave como las 5 V del Big Data, fuentes comunes de datos masivos, y los retos tecnológicos asociados con el procesamiento de grandes cantidades de datos. También describe el modelo de programación MapReduce, incluyendo ejemplos como WordCount y Grep distribuido.
En esta presentación se incentiva el desarrollo de aplicaciones para la resolución de problemas comunes de hoy en día que implican el manejo de grandes volúmenes de información, desde el enfoque de Big Data.
Se propone la combinación de OpenStack y Hadoop para apoyar el desarrollo de soluciones, que permitan extraer información valiosa a partir de grandes volúmenes de datos.
El documento presenta una introducción a Hadoop, incluyendo su instalación, arquitectura, HDFS y MapReduce. Explica que Hadoop es una implementación de código abierto de MapReduce para procesar grandes cantidades de datos en clusters. Describe las características clave de Hadoop como su bajo coste, escalabilidad y tolerancia a fallos.
Este documento presenta una introducción a Hadoop, incluyendo qué es MapReduce, HDFS, y Hadoop. Explica que Hadoop es un framework para almacenar y procesar grandes volúmenes de datos usando hardware de bajo costo. Describe la arquitectura de Hadoop, incluyendo el jobtracker, tasktracker y HDFS. También presenta un ejemplo de cómo construir un cluster Hadoop y ejecutar un trabajo.
Hadoop: MapReduce para procesar grandes cantidades de datosRaul Ochoa
Este documento presenta una introducción a Hadoop y MapReduce. Explica que Hadoop es un framework de código abierto para procesar grandes cantidades de datos de forma distribuida a través de clusters de computadoras. Describe los componentes clave de Hadoop como MapReduce, HDFS y subproyectos como Pig, Hive y HBase. Finalmente, incluye una sección de demostración para aplicar los conceptos aprendidos.
El documento describe el modelo de datos BigTable de Google. BigTable es un sistema de almacenamiento de datos distribuido y de alto rendimiento construido sobre Google File System. Almacena datos en tablas multidimensionales divididas en "tabletas" de 100-200 MB almacenadas en nodos. Esto permite escalabilidad horizontal al agregar nodos y tolerancia a fallos si un nodo falla.
Taller sobre la creación de un clúster de Apache Hadoop y aplicaciones de su entorno de las XIII Xornadas Libres de Gpul en la Universidade da Coruña http://gpul.es/e/2014/xornadas-libres/
Este documento describe el sistema de archivos distribuido HDFS (Hadoop Distributed File System). Explica que HDFS permite interactuar a través de una interfaz de línea de comandos, una interfaz Java y herramientas como hdfs dfsadmin y hdfs fsck. También describe el funcionamiento del namenode principal y de checkpoint, que gestionan el almacenamiento y replicación de archivos en HDFS.
encapsula la lógica de consulta y actualización de
datos.
et, put, delete, getAll, etc.
G
erializadores para claves y valores.
S
Propuesta capa intermedia de
acceso a datos
La propuesta consiste en crear una capa intermedia que encapsule el API cliente de Voldemort y exponga una interfaz más amigable para el desarrollo de aplicaciones.
Esta capa tendría las siguientes características:
- Abstracción de la configuración del cliente (ip, puerto, etc).
Este documento describe cómo crear un clúster Hadoop con Cloudera. Explica la arquitectura de Hadoop, incluyendo los componentes HDFS y MapReduce. También cubre los requisitos, la instalación, y características como la alta disponibilidad. Finalmente, proporciona contexto histórico sobre el desarrollo de Hadoop y empresas como Cloudera y HortonWorks.
Este documento presenta una introducción a MapReduce con Hadoop. Explica los componentes clave de Hadoop 1.x y 2.x, cómo crear una aplicación MapReduce en Java contando palabras, y cómo evitar problemas comunes como tipos de datos incompatibles. También incluye un ejemplo práctico de contar palabras usando MapReduce.
El documento introduce NoSQL y Apache Cassandra. Explica que NoSQL son bases de datos no relacionales que usan lenguajes de consulta distintos a SQL. Cassandra es un sistema distribuido de almacenamiento clave-valor. Usa nodos iguales que se comunican para replicar datos y garantizar disponibilidad. El documento también cubre el modelado de datos en Cassandra usando columnas familia y su lenguaje de consulta CQL.
Tutorial Introductorio a Big Data, Hadoop y sus tecnologías asociadas (Hive, Pig, HBase, HDFS), etc. Presentado en el XVIII Congreso Iberoamericano de Ingenieria del Software (CIBSE). Peru. Lima. Abril del 2015.
HBase es un sistema de almacenamiento de datos NoSQL de código abierto distribuido y basado en columnas inspirado en Bigtable de Google. Usa HDFS para el almacenamiento y se divide en regiones que se distribuyen entre servidores. Grandes empresas como Facebook, Salesforce y Explorys usan HBase para almacenar decenas de petabytes de datos y miles de millones de filas.
Este documento presenta varias tecnologías relacionadas con Hadoop como Pig, Hive, Apache Oozie e HBase. Brevemente describe cada una de estas tecnologías, incluyendo que Pig es un lenguaje de alto nivel para procesar grandes conjuntos de datos usando MapReduce, que Hive es una infraestructura de almacenamiento de datos que permite consultas SQL sobre Hadoop, y que Oozie y HBase son herramientas para programar flujos de trabajo y bases de datos NoSQL respectivamente.
Introducción (en Español) al framework de procesamiento distribuido en memoria Apache Spark. Elementos básicos de Spark, RDD, incluye demo de las librerías SparkSQL y Spark Streaming
Presentado en www.nardoz.com
CouchDB es un software de base de datos NoSQL de código abierto escrito en Erlang. Usa HTTP como interfaz principal y JSON para almacenamiento de datos. Los documentos se indexan y almacenan de forma flexible sin esquema fijo. Incluye características como replicación continua, vistas, seguridad y auditoría.
El documento describe las características y capacidades de Ceph, un sistema de almacenamiento de objetos distribuido de código abierto. Ceph puede escalar horizontalmente hasta el exabyte, no tiene puntos únicos de fallo, y funciona en hardware estándar. Utiliza un diseño descentralizado basado en objetos que puede exponer almacenamiento en forma de objetos, archivos o bloques.
Monta una Infraestructura Big Data para tu Empresa - Sesión IUrko Zurutuza
Este documento presenta un taller de 3 días sobre cómo implementar una infraestructura Big Data para una empresa. El primer día se introduce el concepto de Big Data. El segundo día se instala un cluster Cloudera. El tercer día se realizan ejercicios prácticos sobre el cluster Cloudera. El documento también cubre temas como el ecosistema Big Data, herramientas como Hadoop, HDFS, HBase y sistemas de procesamiento como MapReduce, Pig y Storm.
Monta una Infraestructura Big Data para tu Empresa - Sesión IIUrko Zurutuza
Segunda parte del Taller "Monta una Infraestructura Big Data para tu Empresa", impartido por Urko Zurutuza de Mondragon Unibertsitatea en Enpresa Digitala. En esta segunda parte, se aborda la instalación de un cluster mediante Cloudera Manager 5
Yashwin Sookun, Vandana Bassoo
Department of Electrical and Electronic Engineering, Faculty of Engineering, University of Mauritius, Reduit, Mauritius
E-mail: yashwin.sookun3@umail.uom.ac.mu v.bassoo@uom.ac.mu
Herramientas y ejemplos de trabajos MapReduce con Apache HadoopDavid Albela Pérez
Este documento describe la instalación y configuración de Hadoop en modo pseudo-distribuido en Debian/Linux para ejecutar aplicaciones MapReduce. Explica los requisitos previos como instalar Java y el repositorio de Cloudera, y luego detalla los pasos para instalar Hadoop, configurar los archivos, formatear el NameNode e iniciar los servicios HDFS y MapReduce. También incluye ejemplos del uso de herramientas como Sqoop, Hive e Impala con Hadoop.
Este documento presenta una introducción a Kibana, incluyendo cómo explorar y visualizar datos almacenados en Elasticsearch. Se explican las funciones básicas de Kibana como el aplicativo Explore para explorar datos, diferentes tipos de visualizaciones como gráficos y mapas, y la creación de tableros e infografías. También se mencionan recursos adicionales y el tema del próximo episodio sobre Logstash y Beats.
Monta una Infraestructura para Big Data en tu EmpresaUrko Zurutuza
Tercera y última sesión del curso "Monta una Infraestructura para Big Data en tu Empresa" impartida por Urko Zurutuza de Mondragon Unibertsitatea para Enpresa Digitala. En esta sesión se muestran ejercicios prácticos y guiados que darán pie a probar algunas de las herramientas que dispone la distribucion Hadoop Cloudera CDH5.
Meetup de Spark y su interacción con Kerberos, para verlo como animación: https://docs.google.com/presentation/d/1DCjp_-s9J647Vydt5ltmqfXpS2PrJDo3KzoVz0C9T7Q/edit?usp=sharing
DynamoDB es una base de datos NoSQL de Amazon que ofrece almacenamiento de clave-valor altamente escalable y disponible. Los datos se particionan y replican a través de nodos consistent hashing y versionado de objetos para proporcionar consistencia eventual. DynamoDB sacrifica consistencia inmediata por disponibilidad y rendimiento mediante el uso de quórum de réplicas y resolución de conflictos por el cliente.
Think Like Spark: Some Spark Concepts and a Use CaseRachel Warren
A deeper explanation of Spark's evaluation principals including lazy evaluation, the Spark execution environment, anatomy of a Spark Job (Tasks, Stages, Query execution plan) and presents one use case to demonstrate these concepts.
Taller sobre la creación de un clúster de Apache Hadoop y aplicaciones de su entorno de las XIII Xornadas Libres de Gpul en la Universidade da Coruña http://gpul.es/e/2014/xornadas-libres/
Este documento describe el sistema de archivos distribuido HDFS (Hadoop Distributed File System). Explica que HDFS permite interactuar a través de una interfaz de línea de comandos, una interfaz Java y herramientas como hdfs dfsadmin y hdfs fsck. También describe el funcionamiento del namenode principal y de checkpoint, que gestionan el almacenamiento y replicación de archivos en HDFS.
encapsula la lógica de consulta y actualización de
datos.
et, put, delete, getAll, etc.
G
erializadores para claves y valores.
S
Propuesta capa intermedia de
acceso a datos
La propuesta consiste en crear una capa intermedia que encapsule el API cliente de Voldemort y exponga una interfaz más amigable para el desarrollo de aplicaciones.
Esta capa tendría las siguientes características:
- Abstracción de la configuración del cliente (ip, puerto, etc).
Este documento describe cómo crear un clúster Hadoop con Cloudera. Explica la arquitectura de Hadoop, incluyendo los componentes HDFS y MapReduce. También cubre los requisitos, la instalación, y características como la alta disponibilidad. Finalmente, proporciona contexto histórico sobre el desarrollo de Hadoop y empresas como Cloudera y HortonWorks.
Este documento presenta una introducción a MapReduce con Hadoop. Explica los componentes clave de Hadoop 1.x y 2.x, cómo crear una aplicación MapReduce en Java contando palabras, y cómo evitar problemas comunes como tipos de datos incompatibles. También incluye un ejemplo práctico de contar palabras usando MapReduce.
El documento introduce NoSQL y Apache Cassandra. Explica que NoSQL son bases de datos no relacionales que usan lenguajes de consulta distintos a SQL. Cassandra es un sistema distribuido de almacenamiento clave-valor. Usa nodos iguales que se comunican para replicar datos y garantizar disponibilidad. El documento también cubre el modelado de datos en Cassandra usando columnas familia y su lenguaje de consulta CQL.
Tutorial Introductorio a Big Data, Hadoop y sus tecnologías asociadas (Hive, Pig, HBase, HDFS), etc. Presentado en el XVIII Congreso Iberoamericano de Ingenieria del Software (CIBSE). Peru. Lima. Abril del 2015.
HBase es un sistema de almacenamiento de datos NoSQL de código abierto distribuido y basado en columnas inspirado en Bigtable de Google. Usa HDFS para el almacenamiento y se divide en regiones que se distribuyen entre servidores. Grandes empresas como Facebook, Salesforce y Explorys usan HBase para almacenar decenas de petabytes de datos y miles de millones de filas.
Este documento presenta varias tecnologías relacionadas con Hadoop como Pig, Hive, Apache Oozie e HBase. Brevemente describe cada una de estas tecnologías, incluyendo que Pig es un lenguaje de alto nivel para procesar grandes conjuntos de datos usando MapReduce, que Hive es una infraestructura de almacenamiento de datos que permite consultas SQL sobre Hadoop, y que Oozie y HBase son herramientas para programar flujos de trabajo y bases de datos NoSQL respectivamente.
Introducción (en Español) al framework de procesamiento distribuido en memoria Apache Spark. Elementos básicos de Spark, RDD, incluye demo de las librerías SparkSQL y Spark Streaming
Presentado en www.nardoz.com
CouchDB es un software de base de datos NoSQL de código abierto escrito en Erlang. Usa HTTP como interfaz principal y JSON para almacenamiento de datos. Los documentos se indexan y almacenan de forma flexible sin esquema fijo. Incluye características como replicación continua, vistas, seguridad y auditoría.
El documento describe las características y capacidades de Ceph, un sistema de almacenamiento de objetos distribuido de código abierto. Ceph puede escalar horizontalmente hasta el exabyte, no tiene puntos únicos de fallo, y funciona en hardware estándar. Utiliza un diseño descentralizado basado en objetos que puede exponer almacenamiento en forma de objetos, archivos o bloques.
Monta una Infraestructura Big Data para tu Empresa - Sesión IUrko Zurutuza
Este documento presenta un taller de 3 días sobre cómo implementar una infraestructura Big Data para una empresa. El primer día se introduce el concepto de Big Data. El segundo día se instala un cluster Cloudera. El tercer día se realizan ejercicios prácticos sobre el cluster Cloudera. El documento también cubre temas como el ecosistema Big Data, herramientas como Hadoop, HDFS, HBase y sistemas de procesamiento como MapReduce, Pig y Storm.
Monta una Infraestructura Big Data para tu Empresa - Sesión IIUrko Zurutuza
Segunda parte del Taller "Monta una Infraestructura Big Data para tu Empresa", impartido por Urko Zurutuza de Mondragon Unibertsitatea en Enpresa Digitala. En esta segunda parte, se aborda la instalación de un cluster mediante Cloudera Manager 5
Yashwin Sookun, Vandana Bassoo
Department of Electrical and Electronic Engineering, Faculty of Engineering, University of Mauritius, Reduit, Mauritius
E-mail: yashwin.sookun3@umail.uom.ac.mu v.bassoo@uom.ac.mu
Herramientas y ejemplos de trabajos MapReduce con Apache HadoopDavid Albela Pérez
Este documento describe la instalación y configuración de Hadoop en modo pseudo-distribuido en Debian/Linux para ejecutar aplicaciones MapReduce. Explica los requisitos previos como instalar Java y el repositorio de Cloudera, y luego detalla los pasos para instalar Hadoop, configurar los archivos, formatear el NameNode e iniciar los servicios HDFS y MapReduce. También incluye ejemplos del uso de herramientas como Sqoop, Hive e Impala con Hadoop.
Este documento presenta una introducción a Kibana, incluyendo cómo explorar y visualizar datos almacenados en Elasticsearch. Se explican las funciones básicas de Kibana como el aplicativo Explore para explorar datos, diferentes tipos de visualizaciones como gráficos y mapas, y la creación de tableros e infografías. También se mencionan recursos adicionales y el tema del próximo episodio sobre Logstash y Beats.
Monta una Infraestructura para Big Data en tu EmpresaUrko Zurutuza
Tercera y última sesión del curso "Monta una Infraestructura para Big Data en tu Empresa" impartida por Urko Zurutuza de Mondragon Unibertsitatea para Enpresa Digitala. En esta sesión se muestran ejercicios prácticos y guiados que darán pie a probar algunas de las herramientas que dispone la distribucion Hadoop Cloudera CDH5.
Meetup de Spark y su interacción con Kerberos, para verlo como animación: https://docs.google.com/presentation/d/1DCjp_-s9J647Vydt5ltmqfXpS2PrJDo3KzoVz0C9T7Q/edit?usp=sharing
DynamoDB es una base de datos NoSQL de Amazon que ofrece almacenamiento de clave-valor altamente escalable y disponible. Los datos se particionan y replican a través de nodos consistent hashing y versionado de objetos para proporcionar consistencia eventual. DynamoDB sacrifica consistencia inmediata por disponibilidad y rendimiento mediante el uso de quórum de réplicas y resolución de conflictos por el cliente.
Think Like Spark: Some Spark Concepts and a Use CaseRachel Warren
A deeper explanation of Spark's evaluation principals including lazy evaluation, the Spark execution environment, anatomy of a Spark Job (Tasks, Stages, Query execution plan) and presents one use case to demonstrate these concepts.
What is Distributed Computing, Why we use Apache SparkAndy Petrella
In this talk we introduce the notion of distributed computing then we tackle the Spark advantages.
The Spark core content is very tiny because the whole explanation has been done live using a Spark Notebook (https://github.com/andypetrella/spark-notebook/blob/geek/conf/notebooks/Geek.snb).
This talk has been given together by @xtordoir and myself at the University of Liège, Belgium.
Este documento habla sobre Spark, un framework para procesar grandes cantidades de datos. Spark permite procesar datos en tiempo real de manera más rápida que Hadoop. Se recomienda usar Spark para explorar grandes conjuntos de datos, crear modelos y sistemas de producción que procesen grandes cantidades de eventos en tiempo real. Empresas como Netflix y IBM usan Spark para procesar billones de eventos diarios.
This document discusses Spark concepts and provides an example use case for finding rank statistics from a DataFrame. It begins with introductions and an overview of Spark architecture. It then walks through four versions of an algorithm to find rank statistics from a wide DataFrame, with each version improving on the previous. The final optimized version maps to distinct count pairs rather than value-column pairs, improving performance by sorting 75% fewer records and avoiding data skew. Key lessons are to shuffle less, leverage data locality, be aware of data skew, and optimize for units of parallelization.
This document discusses using ETL Metadata Injection in Pentaho to dynamically load metadata at runtime. Specifically, it describes how to use a template transformation to load cost files with a dynamic header structure, where budget files contain 12 months of data but forecast files can contain between 1-12 months. It provides examples of injecting metadata into text file input and row normalization steps in the template using the Metadata Injection step, and how to programmatically inject metadata into steps that don't natively support injection using the Pentaho API.
The document discusses Resilient Distributed Datasets (RDDs) in Spark. It explains that RDDs hold references to partition objects containing subsets of data across a cluster. When a transformation like map is applied to an RDD, a new RDD is created to store the operation and maintain a dependency on the original RDD. This allows chained transformations to be lazily executed together in jobs scheduled by Spark.
This document discusses loading data from a relational database into a Neo4j graph database. It describes loading product, category and supplier data from CSV files, creating indexes on node labels, and transforming foreign key relationships into graph relationships. Products are related to their categories with :PART_OF relationships and suppliers are related to products they supply with :SUPPLIES relationships, realizing the graph structure.
Bobby Evans and Tom Graves, the engineering leads for Spark and Storm development at Yahoo will talk about how these technologies are used on Yahoo's grids and reasons why to use one or the other.
Bobby Evans is the low latency data processing architect at Yahoo. He is a PMC member on many Apache projects including Storm, Hadoop, Spark, and Tez. His team is responsible for delivering Storm as a service to all of Yahoo and maintaining Spark on Yarn for Yahoo (Although Tom really does most of that work).
Tom Graves a Senior Software Engineer on the Platform team at Yahoo. He is an Apache PMC member on Hadoop, Spark, and Tez. His team is responsible for delivering and maintaining Spark on Yarn for Yahoo.
Kafka and Storm - event processing in realtimeGuido Schmutz
Apache Kafka is publish-subscribe messaging rethought as a distributed commit log. It is designed to allow a single cluster to serve as the central data backbone for a large organization. It can be elastically and transparently expanded without downtime. Storm is a distributed realtime computation system. Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. This session presents the main concepts of Kafka and Storm and then shows how a simple stream processing application is implemented using these two technologies.
Este documento presenta una introducción a Spark, incluyendo conceptos clave como RDD, DataFrame y DStream. Explica cómo Spark puede desplegarse localmente, en modo standalone o usando YARN/Mesos, y describe operaciones fundamentales como transformaciones (map, filter), acciones (count) y métodos de agregación (groupByKey, combineByKey).
Este documento introduce Apache Spark, un sistema de computación de clústeres rápido y expresivo. Spark es más rápido que Hadoop, ya que almacena datos en memoria para consultas iterativas. Spark es compatible con Hadoop y puede leer y escribir datos en cualquier sistema soportado por Hadoop como HDFS. Spark usa Resilient Distributed Datasets (RDD) que permiten transformaciones paralelas sobre colecciones distribuidas de datos.
Meetup Spark y la Combinación de sus Distintos MódulosJorge Lopez-Malla
El documento presenta una introducción a Spark y sus distintos módulos. Explica brevemente Spark Core, que incluye RDD, transformaciones y acciones; Spark SQL, que permite consultas SQL sobre RDD; y cómo se relacionan estos módulos. También menciona Spark Streaming y MLlib, pero se enfoca principalmente en describir Spark Core y SQL, y cómo pueden combinarse mediante la creación de DataFrames a partir de RDD o realizando operaciones de join.
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
Apache Spark [1] es un nuevo framework de procesamiento distribuido para big data, escrito en Scala con wrappers para Python, que viene generando mucha atención de la comunidad por su potencia, simplicidad de uso y velocidad de procesamiento. Ya siendo llamado como el remplazo de Apache Hadoop.
Socialmetrix desarrolla soluciones en este framework para generar reportes y dashboards de información a partir de los datos extraídos de redes sociales.
Los participantes de este tutorial van aprender a levantar información de Twitter usando Spark Streaming, Desarrollar algoritmos para calcular hashtags más frecuentes, usuarios más activos en batch processing aplicarlos en realtime a los nuevos tweets que lleguen a través del stream.
Este documento proporciona información sobre herramientas de Big Data como Apache Hadoop, MapReduce y HDF. También describe Apache Spark, un motor rápido para procesar datos a gran escala. Explica conceptos clave de Spark como RDD, programación funcional en Scala y ejemplos de capacidades como procesar flujos de datos en tiempo real de servidores web o sensores IoT.
MapReduce es un modelo de programación paralela creado por Google en 2004 que permite procesar grandes conjuntos de datos distribuidos en clusters o grids. Se basa en el paradigma de dividir y conquistar, dividiendo los datos en tareas más pequeñas que son procesadas en paralelo. Hadoop es una implementación de código abierto de MapReduce y su sistema de archivos distribuido HDFS que es usado por compañías como Yahoo, Facebook y Amazon.
Este documento compara y resume las características de Spark, Storm, Kafka, Pig y Hive. Spark es una plataforma para procesamiento paralelo de grandes conjuntos de datos distribuidos. Storm es un sistema de procesamiento de datos en tiempo real. Kafka es un sistema de mensajería para procesamiento de datos en tiempo real. Pig y Hive son lenguajes de consultas para analizar grandes volúmenes de datos almacenados en Hadoop.
Este documento presenta a dos personas, José Carlos García Serrano y David Vallejo Navarro, que trabajan con la tecnología Fun[ctional] Spark with Scala. Brevemente describe sus antecedentes profesionales y áreas de interés. Además, introduce los temas que se abordarán en la presentación como las ventajas de Scala en Spark, desventajas de Scala en Spark y Scala avanzado con Spark.
Este documento presenta a dos expertos en Big Data y Spark con Scala, José Carlos García Serrano y David Vallejo Navarro. Brinda información sobre sus experiencias laborales y educacionales trabajando con tecnologías como Scala, Spark, Akka, MongoDB y Cassandra. También incluye un índice de los temas a tratar en la presentación.
El documento describe cómo conectarse y realizar operaciones en bases de datos usando Java Database Connectivity (JDBC). JDBC permite que las aplicaciones Java se conecten a diferentes bases de datos relacionales y realicen consultas SQL. La API JDBC incluye clases como Connection, Statement y ResultSet que permiten establecer conexiones, ejecutar consultas y procesar resultados.
Este documento proporciona una introducción general a Hadoop y su ecosistema. Explica brevemente el contexto histórico de Big Data y Hadoop, define los componentes clave de Hadoop como HDFS y MapReduce, y describe varias aplicaciones populares como Hive, Pig y Spark. También cubre conceptos como EMR de AWS y casos de uso comercial exitosos de Hadoop en análisis de riesgos, retención de clientes y puntos de venta.
La computación distribuída es un nuevo modelo de computación que surgió con el objetivo de resolver problemas de computación masiva donde diferentes máquinas trabajan en paralelo formando un clúster de computación.
En los últimos años han surgido diferentes frameworks como Apache Hadoop, Apache Spark y Apache Flink que permiten resolver este tipo de problemas donde tenemos datos masivos desde diferentes fuentes de datos.
Dentro del ecosistema de Python podemos destacar las librerías de Pyspark y Dask de código abierto que permiten la ejecución de tareas de forma paralela y distribuida en Python.
Entre los puntos a tratar podemos destacar:
Introducción a la computación distribuida
Comparando tecnologías de computación distribuida
Frameworks y módulos en Python para computación distribuida
Casos de uso en proyectos Big Data
Este documento describe la utilidad de JDBC para conectarse a bases de datos desde Java usando SQL. JDBC permite que una aplicación Java se conecte a diferentes bases de datos y las trate de forma uniforme. JDBC consta de dos capas: la capa de aplicación que contiene las clases para interactuar con la base de datos, y la capa de controlador que se encarga de establecer la comunicación con el RDBMS.
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006Álvaro Ortiz
El documento describe lacoctelera.com, un servidor de blogs que se ha convertido en una gran comunidad con 45,000 cuentas y 900,000 comentarios. También describe The Shaker, una herramienta de gestión de comunidad extraída de lacoctelera.com que incluye blogs, fotologs, grupos y etiquetas. Finalmente, detalla la arquitectura técnica de lacoctelera.com, incluyendo el uso de Ruby on Rails, balanceo de carga, replicación de bases de datos, monitoreo y despliegue continuo.
El documento describe el modelo de programación MapReduce. Los usuarios expresan cálculos a gran escala a través de dos funciones: Map, que procesa datos de entrada, y Reduce, que combina resultados. MapReduce distribuye automáticamente las funciones en un clúster y maneja fallos, logrando alta escalabilidad y tolerancia a fallos.
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
Presentación enfocada a mostrar las funcionalidades más importante de los micro framework Spark y Ratpack. Dando una inducción a los conceptos básicos en su utilización del protocolo HTTP y los servicios REST.
Impartida en la segunda edición en el Barcamp 2014, Pontificia Universidad Católica Madre y Maestra (PUCMM), Santiago de los Caballeros, República Dominicana.
Este documento presenta una introducción a Hadoop, incluyendo qué es MapReduce, HDFS, y Hadoop. Explica que Hadoop es un framework para almacenar y procesar grandes volúmenes de datos usando hardware de bajo costo. Usa MapReduce para dividir los problemas en subproblemas que se distribuyen a nodos trabajadores, los cuales devuelven resultados al nodo maestro para ser combinados. HDFS almacena los datos de forma distribuida a través de múltiples nodos para evitar la pérdida de datos.
Este documento trata sobre la optimización y el perfilado de Drupal. Explica qué es Drupal y describe varios módulos como Boost y Memcache que mejoran el rendimiento. También cubre herramientas de depuración y perfilado como Xdebug y JMeter. Además, discute temas como actualizaciones, parches, distribuciones, aceleradores web como Varnish y Pagespeed, y optimización de bases de datos.
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014Stratio
Este documento presenta una introducción a Apache Spark. Explica conceptos clave como RDD, SparkContext y el ecosistema de Spark, incluyendo Spark Core, Spark Streaming, MLlib, SparkSQL y GraphX. También identifica errores comunes como configurar incorrectamente el URL del master o no distribuir los JAR entre los nodos del cluster. El objetivo es proporcionar una visión general de Spark para desarrolladores.
Primeros pasos con Apache Spark - Madrid Meetupdhiguero
Primeros pasos con Spark dentro del Apache Spark Meetup group de Madrid (http://www.meetup.com/Madrid-Apache-Spark-meetup/events/198362002/)
Contenido:
- Introdución
- Conceptos básicos
- Ecosistema Spark
- Instalación del entorno
- Errores comunes
Similar a Resilient Distributed Dataset - Analisis paper (20)
ESPERAMOS QUE ESTA INFOGRAFÍA SEA UNA HERRAMIENTA ÚTIL Y EDUCATIVA QUE INSPIRE A MÁS PERSONAS A ADENTRARSE EN EL APASIONANTE CAMPO DE LA INGENIERÍA CIVIŁ. ¡ACOMPAÑANOS EN ESTE VIAJE DE APRENDIZAJE Y DESCUBRIMIENTO
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxangiepalacios6170
Presentacion de mezclado de polimeros, de la materia de Quimica de Polímeros ultima unidad. Se describe la definición y los tipos de mezclado asi como los aditivos usados para mejorar las propiedades de las mezclas de polimeros
ascensor o elevador es un sistema de transporte vertical u oblicuo, diseñado...LuisLobatoingaruca
Un ascensor o elevador es un sistema de transporte vertical u oblicuo, diseñado para mover principalmente personas entre diferentes niveles de un edificio o estructura. Cuando está destinado a trasladar objetos grandes o pesados, se le llama también montacargas.
Los puentes son estructuras esenciales en la infraestructura de transporte, permitiendo la conexión entre diferentes
puntos geográficos y facilitando el flujo de bienes y personas.
1. SPARK - RDD
“Resilient Distributed Datasets: A Fault-Tolerant
Abstraction for In-Memory Cluster Computing”
Carmen Alonso Martínez
Manuel Bazaga Fortes
Javier de la Rosa Fernández
Alexandra Conde Herno
Danilo Alencar
2. SPARK
● Introducción
● RDD’s
● Interfaz de programación
● Representación de los RDD’s
● Implementación
● Evaluación
● Comentarios y trabajo actual
● Conclusión
3. Introducción
Framework especializado para computación iterativa y
minería de datos interactiva.
¿Reutilizar resultados intermedios para varios cálculos?
-Queremos crear subconjuntos de datos y realizar varias
‘queries’ sobre ellos
RETO: tolerancia a fallos
4. RDD - Definición
Colección particionada de datos de sólo lectura.
Se crean a partir de operaciones deterministas
sobre:
● Almacenamiento estable
● Otros RDDs
Permiten a los usuarios elegir la estrategia de
almacenamiento.
5. Interfaz de programación Spark
Cada colección de datos se representa como un objeto, y
las transformaciones se invocan utilizando métodos sobre
estos objetos.
Los RDDs son calculados la primera vez que se ejecuta
una acción sobre ellos.
Si no hay suficiente RAM, Spark puede pasar los RDDs a
disco.
7. Ventajas del modelo RDD
Diferencia RDDs vs DSM:
RDD-transf. de granularidad gruesa
DSM-permiten R/W de granularidad fina
● Recuperación: linaje
● Mitigación de nodos lentos
● Programación de tareas
● Degradación gradual cuando falta memoria
8. Aplicaciones no adecuadas para RDDs
Actualizaciones asíncronas de granularidad fina
ie: web crawler, almacenamiento para aplicaciones web
Misma operación a todos los elementos del dataset
Análisis masivos
9. SPARK
● Introducción
● RDD’s
● Interfaz de programación
● Representación de los RDD’s
● Implementación
● Evaluación
● Comentarios y trabajo actual
● Conclusión
10. Spark Programming Interface
● Spark proporciona una API similar a DryadLINQ y a
Flume.
● Los programadores definen los RDD a través de
transformaciones o de datos de almacenamiento
estables.
● A estos RDDs se les aplican acciones
o Acciones: operaciones que devuelven un valor a la
aplicación o exportan datos al sistema de
almacenamiento.
11. Spark Programming Interface
Spark maneja los RDD de forma perezosa, una
transformación no se realiza hasta que una acción no
se ejecuta por primera vez.
Mediante el método persist se puede indicar a Spark
que datos serán reusados
Spark permite almacenar también en disco los RDD
en lugar de en memoria (por defecto).
También se puede establecer prioridades de
persistencia
12. Ejemplo de aplicaciones
Logistic Regression
Al aplicar el algoritmo al mismo conjunto de datos y estar
estos datos en memoria puede aumentar la velocidad 20x.
14. SPARK
● Introducción
● RDD’s
● Interfaz de programación
● Representación de los RDD’s
● Implementación
● Evaluación
● Comentarios y trabajo actual
● Conclusión
15. Representando RDDs
Cada interfaz RDD expone:
● Un conjunto de particiones, que son piezas
atómicas de la base de datos.
● Un conjunto de dependencias de los padres RDDs;
● Una función para calcular el conjunto de datos en
función de sus padres.
● Metadatos sobre su esquema de partición y la
colocación de los datos.
16. Representando RDDs
Existen dos tipos de dependencias RDD:
● Dependencias estrechas, donde cada partición de
la matriz RDD es utilizada como máximo por una
particion hija.
● Dependencias anchas, donde múltiples particiones
secundarias pueden depender de ella.
17. Representando RDDs
Dependencias estrechas vs anchas
● Estrechas
Permite la ejecución en Pipeline
y calcula todas las particiones
del padre (segmentar).
Recuperación tras fallo más
eficiente
Ej: map
● Anchas
Requieren que los datos de todas
las particiones de los padres estén
disponibles.
Podría requerir una re-ejecución
Ej: join
18. Algunas implementaciones RDD
● HDFS: Una posible entrada RDD podría ser un
HDFS. Devuelve una partición por bloque de fichero.
● Map: Devuelve un objeto MappedRDD con las
mismas particiones y preferencias de localización que
su padre.
● Union: La función unión aplicada a dos RDD
devuelve un RDD cuya particiones son la unión de
los dos padres.
19. Algunas implementaciones RDD
● sample: Función similar a la función map. El RDD
guarda un número aleatorio generado por una semilla
para cada partición.
● join: La unión de dos RDD puede conducir a:
o Dos dependencias estrechas
o Dos dependencias anchas
o Combinación de ambas
Pero en cualquier caso la salida es un RDD.
20. SPARK
● Introducción
● RDD’s
● Interfaz de programación
● Representación de los RDD’s
● Implementación
● Evaluación
● Comentarios y trabajo actual
● Conclusión
21. Implementación
- Implementan Spark en 14000 líneas de Scala
- El sistema se ejecuta sobre el administrador de Cluster Mestos
permitiendo compartir recursos con Hadoop, MPI y otras
aplicaciones
- Cada programa de Spark funciona con una aplicación separada
de Mesos, con su propio driver y workers y recursos comparti-
dos entre estas aplicaciones que está manejada por Mesos
- Spark puede leer cualquier datos de entrada de Hadoop usando
APIs del propio Hadoop y ejecutar una versión de Scala sin
cambios
22. Planificación de Tareas
Usa representación de RDDs,
es similar al Dryads pero añade
cuales particiones persistentes
están disponibles en memoria.
Si el usuario ejecuta una
acción (count o save) en el
RDD, el planificador examina
cual línea gráfica del RDD para
construir el DAG de stages
para ser ejecutado
23. Planificación de Tareas
El planificador:
● Ejecuta las tareas de particiones faltosas para cada stage hasta que
esté computada con el objetivo de RDD
● Asigna tarea para cada máquina basada en los datos locales usando
un delay, es decir, si la tarea necesita que la partición sea procesada
en la memoria disponible en un nodo, enviaremos para este nodo, de
lo contrario, si una tarea procesa una partición para algún RDD que
proporcione ubicaciones preferidas (ej.: un archivo de HDFS),
nosotros le enviamos a este.
24. Integración Intérprete
- Shell interactivo similares al de Ruby y Python
- Usuarios ejecutarán Spark interactivamente desde el intérprete para
consultar grandes conjuntos de datos
- El intérprete opera compilando la clase para cada línea tecleada por
el usuario, cargando en el JVM e invocando una función a él
- Esta clase incluye un objeto semifallo que contiene las variables o
funciones en esta línea e que ejecuta el código de línea en el método
de inicialización.
25. Integración Intérprete
Usuario teclea var x = 5 println (x) y el intérprete define
Class Line1 que contiene x y causa que la segunda línea
compile como println(Line1.getInstance().x)
1- Envío de Clase – deja que los nodos worker traigan el
bytecode para las clases creadas en la cada línea usando
HTTP.
2- Generación de código modificado - como el objeto
creado de semifallo se accede por método estático en
su clase correspondiente, Java no se traza a través del
gráfico de objeto para enviar la instancia la Línea 1
envolver alrededor del x. Pero los nodos workers
tampoco recibirán la x. Cambiamos que el código lógico
referencie la instancia para cada línea de objeto
directamente.
26. Administración de memoria
Provee 3 opciones para almacenamiento persistentes de
RDDs:
- En memoria como objeto Java deserializados
- En memoria como datos deserializados
- Almacenamiento en disco
27. Soporte para Checkpointing
- Es útil para estabilizar el almacenamiento
- Es útil para RDD tenga linaje de grafos de
dependencias anchas como los datasets de PageRank
- Spark provee API para este Soporte de Checkpointing
pero deja la decisión de soporte para el usuario.
28. SPARK
● Introducción
● RDD’s
● Interfaz de programación
● Representación de los RDD’s
● Implementación
● Evaluación
● Comentarios y trabajo actual
● Conclusión
29. Evaluación
● Se realizan una serie de experimentos para evaluar Spark y los RDD,:
○ velocidad con respecto a otros sistemas (Hadoop y HadoopBM)
○ evaluación de la escalabilidad
○ tolerancia a fallos
● Amazon EC2:
○ Máquinas xlarge con 4 cores y 15 GB de RAM
○ Hemos usado HDFS con 256 MB de tamaño bloque
30. Aplicaciones iterativas de Machine Learning
Sistemas:
● Hadoop 0.20.2 ( ahora
va por el 2.60)
● HadoopBinMem
● Spark
Datos:
● 100 GB de datos
● Cluster de 100 nodos
Mejora de 20x
31. Ejemplo - Pagerank
Datos:
● 54 GB de Wikipedia
● 10 iteraciones
● 4 millones de artículos
Sistemas:
● Hadoop
● Spark
● Spark + Particiones
Controladas
Mejora de 7.4 X
34. Otras aplicaciones implementadas en Spark
Traffic Modeling:
● 10000 link
● 600000 ejemplos de tramos de
viaje
Spam en Twitter:
● 50GB datos
● 250000 URLs
35. Ejemplo - Minería de Datos
Datos:
● 1TB de logs de Wikipedia
● 2 años de datos)
● 100 4xlarge instancias EC2
● 8 cores y 68GB de RAM
36. Evaluación - conclusiones
● Spark llega a ser hasta 20x en aplicaciones de Machine
Learning Iterativas.
● Aplicaciones de usuarios (video, tráfico,...) llegan a ser 40x más
rápidas que con Hadoop.
● Si un nodo falla, Spark puede recuperarse rápidamente
reconstruyendo sólo los RDDs perdidos.
● Spark puede ser usado para hacer consultas a un conjunto de
datos de 1TB con una latencia de unos 5-7 segundos.
37. SPARK
● Introducción
● RDD’s
● Interfaz de programación
● Representación de los RDD’s
● Implementación
● Evaluación
● Comentarios y trabajo actual
● Conclusión
38. Discusión
Aunque las RDDs parecen ofrecer una interfaz de programación
limitada debido a su naturaleza inmutable y transformaciones de
granularidad gruesa, hemos encontrado que son adecuadas para
una amplia clase de aplicaciones.
Pueden expresar un sorprendente número de modelos de
programación de clúster que hasta el momento se han propuesto
como frameworks separados, lo que permite a los usuarios
componer estos modelos en un programa y compartir datos entre
ellos.
39. Expresando Modelos Existentes
● MapReduce
● DryadLINQ SQL.
● Pregel.
● MapReduce iterativo.
● Procesamiento de flujo por lotes.
40. Aprovechamiento para la depuración
Diseño determinista recomputable para tolerancia a fallos, esta
propiedad también facilita la depuración:
1. Reconstruir estos RDD después y permitir al usuario consultar
de forma interactiva.
1. Volver a ejecutar cualquier tarea desde el trabajo en un
depurador de un solo proceso
41. Trabajo Relacionado
Modelos de Programación de clúster
● A diferencia de MapReduce, Dryad y Ciel representa un
intercambio más eficiente de la abstracción de datos que el
almacenamiento estable porque evitan el costo de replicación
de datos, I/O y serialization.
● DryadLINQ y FlumeJava proporcionan un API de lenguaje
integrado donde el usuario manipula "colecciones paralelas" a
través de operadores como map y join, no pueden compartir
eficientemente datos a través de consultas.
42. Trabajo Relacionado
● Aplicaciones que requieren el intercambio de datos, Pregel es
compatible con aplicaciones de gráficos iterativos, mientras que
en Twister y HaLoop son los tiempos de ejecución de
MapReduce iterativos. RDDs proporcionan una abstracción de
almacenamiento distribuido de forma explícita y por lo tanto
pueden soportar aplicaciones que estos sistemas
especializados no capturan, como la minería de datos
interactiva
43. Trabajo Relacionado
● Algunos sistemas exponen un estado mutable compartido para
permitir al usuario realizar la computación en memoria. Por
ejemplo, Piccolo permite a los usuarios ejecutar funciones
paralelas que leen y actualizan celdas en una tabla hash
distribuida, similar a los sistemas Distribuidos de Memoria
Compartida (DSM) y las stores de clave valor como RAMCloud.
RDDs proporcionan una interfaz de programación de alto nivel
basado en operadores como map, sort y join. Y recuperación de
datos basados en linaje(Piccolo y DSM). también proporcionan
otras ventajas sobre DSM, como la mitigación rezagada
44. Trabajo Relacionado
Sistemas de almacenamiento en caché
● Nectar puede reutilizar los resultados intermedios a través de
trabajos DryadLINQ identificando sub expresiones comunes con
el análisis del programa. No proporciona el almacenamiento en
memoria caché (se coloca los datos en una sistema de datos
distribuido), ni permite a los usuarios controlar de forma
explícita qué conjuntos de datos para persistir y cómo
particionarlos
● Ciel y FlumeJava no proporcionan control sobre lo que se
almacena en memoria caché o que datos son cacheados.
45. Trabajo Relacionado
Linaje
● El mecanismo de recuperación basado en el linaje es similar al
mecanismo de recuperación que se utiliza dentro de un
cómputo (Job) en MapReduce y Dryad, que registra las
dependencias entre un DAG de tareas. en estos sistemas, la
información se pierde después que termina un trabajo, lo que
requiere el uso de un sistema de almacenamiento replicado
para compartir datos a través de cálculos. RDD aplican linaje
para persistir en la memoria los datos eficientemente a través
de cálculos, sin costo de replicación e I/O de disco.
46. Trabajo Relacionado
Bases de datos relacionales
● RDD persistentes asemejan vistas materializadas. Sin embargo,
al igual que los sistemas de DSM, las bases de datos suelen
permitir acceso de grano-fino de lectura y escritura a todos los
registros, lo que requiere el registro de las operaciones y datos
para la tolerancia a fallos y la sobrecarga adicional para
mantener la consistencia. Estos gastos no son necesarios con
el modelo de transformación de grano grueso de RDD
47. SPARK
● Introducción
● RDD’s
● Interfaz de programación
● Representación de los RDD’s
● Implementación
● Evaluación
● Comentarios y trabajo actual
● Conclusión
48. Conclusión
● Son eficientes, de uso general y con tolerancia a fallos para el
intercambio de datos en las aplicaciones del clúster.
● RDD puede expresar una amplia gama de aplicaciones
paralelas (modelos de programación especializados que se han
propuesto para el cálculo iterativo)
● RDD ofrecen una API basada en las transformaciones de
granuralidad gruesa que les permite recuperar datos
eficientemente usando linaje.
● Implementaron RDD en Spark que supera a Hadoop hasta en
un 20 × y se puede utilizar de forma interactiva para consultar
cientos de gigabytes de datos.
Notas del editor
Hay muchos frameworks capaces de trabajar con grandes cantidades de datos, sin embargo se detectó la necesidad de crear uno específicamente para la computación iterativa (por ejemplo, aplicaciones que aplican la misma operación a diferentes conjuntos de datos)
-¿reutilizar...
Hasta Spark, la única manera de hacer queries sobre un subconjunto de datos era escribir tal subconjunto en un almacenamiento externo, lo cual aumentaba mucho el tiempo de ejecución.
El reto que plantea es implementar una interfaz capaz de proveer tolerancia a fallos eficientemente.
Hasta ahora, la manera de implementar tolerancia a fallos era replicar los datos, lo cual resulta caro.
Los RDDs juegan con la granularidad de las operaciones y loguean las transformaciones utilizadas para construir el subconjunto, en lugar de almacenar los datos tal cual.
Como veremos más adelante, jugando en su campo Spark mejora el tiempo de ejecución de Hadoop a la vigésima parte.
Los RDD son colecciones particionadas de datos, construidas a partir de bases de datos mayores u otros RDDs.
Como ya hemos dicho, guardan información de cómo fueron calculados.
Finalmente, los usuarios pueden elegir la estrategia de almacenamiento, es decir la persistencia y el el particionamiento de los RDDs para optimizar la aplicación.
-
Se comienza creando RDDs mediante transformaciones como map o filter, y después se aplican acciones (que son los métodos que devuelven un valor), como count o collect.
Los RDDs son calculados “de manera vaga” la primera vez que se ejecuta una acción sobre ellos.
Si no hay suficiente RAM, Spark puede pasar los RDDs a disco.
Esto también forma parte de la estrategia de almacenamiento que hemos dicho antes que podíamos definir.
Podemos replicar los RDDs en varias máquinas, crearlos sólo en disco o establecer una prioridad acerca de qué RDD debería paginar a disco primero.
ie: un servicio web
En lugar de mirar todos los logs, con Spark podemos cargar en RAM sólo los mensajes de error y hacer queries sobre ellos.
La primera línea crea un RDD a partir de un fichero HDFS, y la segunda línea crea un RDD a partir del RDD anterior. La tercera línea pide que este último RDD persista en memoria.
A partir de aquí se pueden aplicar acciones sobre “errors”.
(Cuando se ejecute la primera acción sobre “errors”, se guardará en memoria para agilizar cómputos posteriores)
El paper compara el modelo RDD con el DSM (Distributed shared memory) que lee y escribe en localizaciones arbitrarias de un espacio de direccionamiento global.
DSM es una abstracción muy generalista, lo cual dificulta su implementación eficiente en “commodity clusters”
La principal diferencia es que los RDDs pueden ser creados a partir de transformaciones de granularidad alta.
Esto restringe el modelo RDD a aplicaciones de escritura masiva, y permite una tolerancia a fallos más eficiente.
Las ventajas propiamente dichas son las siguientes:
-Los RDDs ahorran en overhead y checkpoints, ya que se pueden recuperar a través de su linaje paralelamente en diferentes nodos.
-Para mitigar los nodos más lentos, Spark corre un backup de las tareas más lentas en MapReduce. Este tema de las tareas backup sería muy difícil de implementar en DSM, ya que ambas tareas accederían a la misma memoria.
-Al hacer operaciones en masa sobre RDDs, se pueden programar las tareas basándose en la localidad de los datos para mejorar el rendimiento
-Por último, en ausencia de memoria (como hemos dicho, empezamos a pasar los datos al disco) y la degradación del modelo RDD es gradual
Algunas aplicaciones no son adecuadas para el modelo RDD porque no se benefician de las novedades que trae.
MapReduce: Este modelo se puede expresar mediante las operaciones flatMap y groupByKey en Spark, o reduceByKey si hay un combinador.
DryadLINQ: El sistema DryadLINQ ofrece una gama más amplia de operadores que MapReduce durante el tiempo de ejecución más general Dryad, pero estos son todos los operadores a granel que corresponden directamente a las transformaciones RDD disponibles en Spark (mapa, groupByKey, unir, etc).
SQL: Como expresiones DryadLINQ, consultas SQL realizan operaciones de datos en paralelo en un conjunto de registros.
Pregel: de Google Pregel [22] es un modelo especializado para aplicaciones de gráficos iterativos que a primera vista parece muy diferente de los modelos de programación orientada a conjuntos en otros sistemas. En Pregel, un programa se ejecuta como una serie de “Superpasos” coordinados. En cada superpaso, cada vértice en el gráfico ejecuta una función de usuario que puede actualizar estado asociado con el vértice, cambiar la topología gráfica, y enviar mensajes a otros vértices para usar en el siguiente superpaso. Este modelo se puede expresar muchos algoritmos de grafos, incluyendo caminos más cortos, bipartita matching y PageRank.
MapReduce iterativo: Varios sistemas propuestos recientemente, incluyendo HaLoop y Twister, proporcionan un modelo MapReduce iterativo en el que el usuario le da al sistema una serie de trabajos de MapReduce de bucle. Los sistemas mantienen datos divididos consistentemente a través de iteraciones, y Twister también lo puede mantener en la memoria. Ambos optimizaciones son fáciles de expresar con RDD, y hemos sido capaces de implementar HaLoop como una librería de 200 líneas usando Spark.
Procesamiento de flujo por lotes: Recientemente los investigadores han propuesto varios sistemas de procesamiento adicionales para las aplicaciones que se actualizan el resultado periódicamente con nuevos datos. Estos sistemas realizan operaciones de bulk similares a Dryad, pero almacenando el estado de la aplicación en sistemas de ficheros distribuidos. Colocando el estado intermedio en RDDs aceleraría su procesamiento.