La respuesta a esto es que Hadoop MapReduce y Apache Spark no compiten entre sí.
De hecho, se complementan bastante bien. Hadoop pone enormes conjuntos de datos bajo el control de los sistemas básicos. Spark proporciona procesamiento en memoria en tiempo real para aquellos conjuntos de datos que lo requieren.
Cuando combinamos, la capacidad de Apache Spark, es decir, alta velocidad de procesamiento, análisis avanzado y soporte de integración múltiple con la operación de bajo costo de Hadoop en hardware básico, da los mejores resultados. Hadoop complementa las capacidades de Apache Spark.
Spark no puede reemplazar completamente a Hadoop, pero la buena noticia es que la demanda de Spark se encuentra actualmente en su punto más alto.
Diferencia entre Apache Spark y Hadoop
Actuación
Spark es rápido porque tiene procesamiento en memoria. También puede usar el disco para datos que no encajan en la memoria. El procesamiento en memoria de Spark ofrece análisis casi en tiempo real. Esto hace que Spark sea adecuado para el sistema de procesamiento de tarjetas de crédito, aprendizaje automático, análisis de seguridad y sensores de Internet de las cosas.
Hadoop se configuró originalmente para recopilar continuamente datos de múltiples fuentes sin preocuparse por el tipo de datos y almacenarlos en un entorno distribuido. MapReduce utiliza el procesamiento por lotes. MapReduce nunca se creó para el procesamiento en tiempo real, la idea principal detrás de YARN es el procesamiento paralelo sobre el conjunto de datos distribuido.
El problema al comparar los dos es que realizan el procesamiento de manera diferente.
Facilidad de uso
Spark viene con API fáciles de usar para Scala, Java, Python y Spark SQL. Spark SQL es muy similar a SQL, por lo que es más fácil para los desarrolladores de SQL aprenderlo. Spark también proporciona un shell interactivo para que los desarrolladores consulten y realicen otras acciones y reciban comentarios inmediatos.
Puede ingerir datos en Hadoop fácilmente, ya sea utilizando shell o integrándolos con múltiples herramientas como Sqoop, Flume, etc. YARN es solo un marco de procesamiento y puede integrarse con múltiples herramientas como Hive y Pig. HIVE es un componente de almacenamiento de datos que realiza lectura, escritura y gestión de grandes conjuntos de datos en un entorno distribuido utilizando una interfaz similar a SQL. Puede consultar este blog del ecosistema de Hadoop para conocer las diversas herramientas que se pueden integrar con Hadoop.
Costos
Hadoop y Spark son proyectos de código abierto de Apache, por lo que el software no tiene costo. El costo solo está asociado con la infraestructura. Ambos productos están diseñados de tal manera que pueden ejecutarse en hardware básico con bajo TCO.
Ahora puede que se pregunte las formas en que son diferentes. El almacenamiento y procesamiento en Hadoop está basado en disco y Hadoop utiliza cantidades estándar de memoria. Entonces, con Hadoop necesitamos mucho espacio en disco, así como discos más rápidos. Hadoop también requiere múltiples sistemas para distribuir el disco de E / S.
Debido al procesamiento de memoria de Apache Spark, requiere mucha memoria, pero puede manejar una velocidad y cantidad de disco estándar. Como el espacio en disco es un producto relativamente económico y dado que Spark no usa E / S de disco para el procesamiento, en su lugar requiere grandes cantidades de RAM para ejecutar todo en la memoria. Por lo tanto, el sistema Spark incurre en más costos.
Pero sí, una cosa importante a tener en cuenta es que la tecnología de Spark reduce la cantidad de sistemas necesarios. Necesita significativamente menos sistemas que cuestan más. Entonces, habrá un punto en el que Spark reducirá los costos por unidad de cómputo incluso con el requisito de RAM adicional.
Procesamiento de datos
Hay dos tipos de procesamiento de datos: procesamiento por lotes y procesamiento de flujo.
Procesamiento por lotes vs procesamiento de flujo
YARN es básicamente un marco de procesamiento por lotes. Cuando enviamos un trabajo a YARN, lee datos del clúster, realiza operaciones y escribe los resultados en el clúster. Luego vuelve a leer los datos actualizados, realiza la siguiente operación y escribe los resultados en el clúster y así sucesivamente.
Spark realiza operaciones similares, pero utiliza el procesamiento en memoria y optimiza los pasos. GraphX permite a los usuarios ver los mismos datos como gráficos y como colecciones. Los usuarios también pueden transformar y unir gráficos con conjuntos de datos distribuidos resilientes (RDD).
Tolerancia a fallos
Hadoop y Spark proporcionan tolerancia a fallas, pero ambos tienen un enfoque diferente. Para HDFS y YARN, los daemons maestros (es decir, NameNode y ResourceManager respectivamente) verifican los latidos de los daemons esclavos (es decir, DataNode y NodeManager respectivamente). Si algún demonio esclavo falla, los demonios maestros reprograman todas las operaciones pendientes y en progreso a otro esclavo. Este método es efectivo, pero también puede aumentar significativamente los tiempos de finalización para operaciones con fallas únicas. Como Hadoop usa hardware básico, otra forma en que HDFS garantiza la tolerancia a fallas es mediante la replicación de datos.
Los RDD son bloques de construcción de Apache Spark. Los RDD proporcionan tolerancia a fallas a Spark. Pueden referirse a cualquier conjunto de datos presente en un sistema de almacenamiento externo como HDFS, HBase, sistema de archivos compartido. Se pueden operar en paralelo.
Los RDD pueden conservar un conjunto de datos en la memoria en todas las operaciones, lo que hace que las acciones futuras sean 10 veces más rápidas. Si se pierde un RDD, se volverá a calcular automáticamente utilizando las transformaciones originales. Así es como Spark proporciona tolerancia a fallas.
Seguridad
Hadoop admite Kerberos para la autenticación, pero es difícil de manejar. Sin embargo, también es compatible con proveedores externos como LDAP (Lightweight Directory Access Protocol) para la autenticación. También ofrecen cifrado. HDFS admite permisos de archivos tradicionales, así como listas de control de acceso (ACL). Hadoop proporciona la Autorización de nivel de servicio, que garantiza que los clientes tengan los permisos correctos para la presentación de trabajos.
Spark actualmente admite autenticación a través de un secreto compartido. Spark puede integrarse con HDFS y puede usar ACL de HDFS y permisos de nivel de archivo. Spark también puede ejecutarse en YARN aprovechando la capacidad de Kerberos.
Casos de uso donde Hadoop encaja mejor:
- Análisis de datos de archivo. YARN permite el procesamiento paralelo de grandes cantidades de datos. Partes de datos se procesan en paralelo y por separado en diferentes DataNodes y reúnen los resultados de cada NodeManager.
- Si no se requieren resultados instantáneos. Hadoop MapReduce es una solución buena y económica para el procesamiento por lotes.
Casos de uso donde Spark encaja mejor:
- Análisis de Big Data en tiempo real
- Procesamiento de gráficos
- Algoritmos iterativos de aprendizaje automático
También puede consultar la lista de reproducción de videos tutoriales de Spark y la serie de blogs de Spark . Su aprendizaje debe estar alineado con la certificación Hadoop .