Compara Hadoop y Spark.
Característica | Apache Spark | Hadoop |
Velocidad | 100 veces más rápido | Velocidad Descendente |
Procesado | Real-time & Batch | Solo Batch |
Dificultad | Muy fácil porque tiene varios módulos | Difícil de aprender |
Recuperación | Permite la recuperación de particiones | Tolerante a Fallos |
Interactividad | Tiene partes interactivas | No tiene parte interactiva excepto Hive o Pig |
Tabla: Apache Spark versus Hadoop
¿Qué es Apache Spark?
- Apache Spark es un framework open-source de computación distribuida para procesos de Tiempo Real en Memoria*.
- Es el proyecto más activo de todos los proyectos de Apache.
- Spark provee un interface de programación paralela y tolerante a Fallos.
- Apache Spark tiene los siguientes componentes:
- Spark Core: Motor base para procesamiento de datos en paralelo y distribuido a gran escala. Cualquier mejora en el Core, es una mejora en las otros componentes.
- Spark Streaming: Se utiliza para procesar datos en transmisión en tiempo real.
- Spark SQL: Integra el procesamiento relacional con la programación funcional de Spark y, es una de las mas usadas.
- GraphX: Gráficos y computación en paralelo a gráficos.
- MLlib: Realiza el “Machine Learning” en Apache Spark
Explica las características de Spark.
- Polyglot: Spark proporciona API de alto nivel en Java, Scala, Python y R. Los códigos de Spark se pueden escribir en cualquiera de estos cuatro Lenguajes. Proporciona una shell para Scala o Python y, se puede acceder al shell de Scala a través de ./bin/spark-shell y al shell de Python a través de ./bin/pyspark. Todo esto desde el directorio instalado.
- Velocidad: Spark corre hasta 100 veces más rápido que Hadoop MapReduce. Spark es capaz de alcanzar esta velocidad a través de la partición controlada. Administra los datos utilizando particiones que ayudan a paralelizar el procesamiento de datos distribuidos con un tráfico de red mínimo.
- Formatos múltiples: Spark admite múltiples fuentes de datos como Parquet, JSON, Hive y Cassandra. Ademas hay cantidad de librerías que nos permiten guardar datos en formato XML, CSV o Avro.
- Lazy Evaulation (Evaluación Perezosa) : Apache Spark retrasa su evaluación hasta que es absolutamente necesario. Este es uno de los factores clave que contribuyen a su velocidad.
- Cálculo en tiempo real: el cálculo de Spark es en tiempo real y tiene menos latencia debido a su cálculo en memoria. Spark está diseñado para una escalabilidad masiva.
- Integración de Hadoop: Apache Spark proporciona una compatibilidad fluida con Hadoop. Esta es una gran ventaja para todos los ingenieros de Big Data que comenzaron sus carreras con Hadoop. Spark es un reemplazo potencial para las funciones MapReduce de Hadoop.
- Machine Learning: Spark’s MLlib es el componente de Machine Learning que es útil cuando se trata del procesamiento de Big Data. Erradica la necesidad de utilizar múltiples herramientas, una para el procesamiento y otra para el Machine Learning.
Como funciona Spark.
- Cada aplicativo de Spark (el Jar que se ejecuta), se conoce como Application.
- Cada Application consta de varios Jobs. Entre los jobs de un mismo Application no se comparte ni memoria, ni recursos.
- Cada Job se compone de una serie de Stages y, cada Stages se compone de diversos Task. Un Task ejecuta todas aquellas operaciones que no necesitan información de otras máquinas.
- Cada Task de un Stage se ejecutara en la misma JVM.
- Un Stage es una unidad física de ejecución. Es un Step dentro del plan físico de ejecución.
¿Cuáles son los beneficios de Spark sobre MapReduce?
Spark tiene los siguientes beneficios sobre MapReduce:
- Debido a la disponibilidad de procesamiento en memoria, Spark implementa el procesamiento de 10 a 100 veces más rápido que Hadoop MapReduce, mientras que MapReduce hace uso del almacenamiento de persistencia para cualquiera de las tareas de procesamiento de datos.
- A diferencia de Hadoop, Spark proporciona bibliotecas incorporadas para realizar múltiples tareas desde el mismo núcleo como procesamiento por lotes, Streaming, Machine Learning, consultas SQL interactivas. Sin embargo, Hadoop solo admite el procesamiento por lotes.
- Hadoop es altamente dependiente del disco, mientras que Spark promueve el almacenamiento en caché y el almacenamiento de datos en memoria.
- Spark es capaz de realizar cálculos varias veces en el mismo conjunto de datos. Esto se denomina computación iterativa mientras que no hay computación iterativa implementada por Hadoop.
Nombra los tres tipos de gestion del Cluster en Spark.
El framework de spark soporta tres tipos de gestión de los cluster:
- Standalone : El Gestor básico de instalación de un cluster.
- Apache Mesos : Es la forma más común de ejecutar Spark.
- Yarn : Ideal para gestiona los recursos en Hadoop.
Explica las características de Spark.
- Permite la integración con Hadoop y ficheros, includo HDFS.
- Spark contiene un shell interactivo que es indpendiente del lenguaje.
- Spark consiste de RDD’s (Resilient Distributed Datasets), los cuales pueden ser almacenados a lo largos de varios nodos.
¿Qué es un RDD?
Es el acrónimo de Resilient Distribution Datasets, son colecciones tolerantes a fallos y que se ejecutan en paralelos. Estos objetos son inmutables. Existen dos tipos
-
- Colecciones Paralelas.
- Hadoop Dataset.
¿Qué operaciones soportan los RDD?
-
- Transformaciones.
- Acciones.
¿Qué son las transformaciones?
¿Qué son las acciones?
¿Qué es Spark SQL?
SQL Spark, más conocido como Shark, es un módulo para trabajar con datos estructurados y realizar un procesamiento estructurado de datos. A través de este módulo, Spark ejecuta consultas SQL relacionales en los datos. El núcleo del componente admite un RDD completamente diferente llamado SchemaRDD, compuesto por objetos de filas y objetos de esquema que definen el tipo de datos de cada columna en la fila. Es similar a una tabla en la base de datos relacional. Para datos que contienen un schema debemos usar los Dataframe o DataSet. Estos son los objetos más comunes a la hora de usar Spark SQL
¿Cual es la diferencia entre dataframe y dataset?
- DataFrame:
- Colección distribuida de Objeto Fila: Colección distribuida de datos organizados en columnas nombradas.
- Procesamiento de datos: Procesamiento de formatos de datos estructurados y no estructurados.
- Posee una API que potencia las consultas SQL.
- Es compatible con Hive, puede ejecutar consultas sin modificar los metastore de Hive.
- No admite seguridad en tiempo de compilación.
- DataSet:
- Ofrece lo mejor de RDD y Dataframe.
- Son fuertemente tipados.
- Proporciona seguridad de tiempo de compilación que no estaba disponible en Dataframes. Si se crea el objeto persona podemos usar el atributo edad.
¿Os parecen adecuadas estas preguntas? ¿Añadirías alguna más?
Bibliografía:
https://www.edureka.co/blog/interview-questions/top-apache-spark-interview-questions-2016/
https://intellipaat.com/interview-question/apache-spark-interview-questions/
https://www.dezyre.com/article/top-50-spark-interview-questions-and-answers-for-2018/208