Spark vs Hadoop, ¿Cuál es la mejor opcion?

Cloudera vs Hortonworks

Una pregunta muy frecuente a la hora de elegir una herramienta para procesar grandes datos es ¿usar Hadoop o Spark? Aquí te mostraremos un análisis en donde examinamos un conjunto común de atributos para cada plataforma, valorando el rendimiento, tolerancia a fallas, costo, facilidad de uso, procesamiento de datos, compatibilidad y seguridad.

Antes de iniciar el análisis comparativo es importante recordar y definir cada una de las herramientas por separado.

Usos de Hadoop

Es un proyecto de Apache.org. Hadoop puede escalar desde sistemas informáticos individuales hasta miles de sistemas básicos que ofrecen almacenamiento local y capacidad de cálculo.

Las empresas que usan grandes conjuntos de datos y análisis usan Hadoop. Se ha convertido en una aplicación importante de big data. Hadoop originalmente fue diseñado para manejar el rastreo y la búsqueda de miles de millones de páginas web y recopilar su información en una base de datos. El resultado del deseo de rastrear y buscar en la web fue HDFS de Hadoop y su motor de procesamiento distribuido, MapReduce.

Apache Hadoop

Usos de Spark

Aunque los críticos del procesamiento en memoria de Spark admiten que Spark es muy rápido, pues es hasta 100 veces más rápido que Hadoop MapReduce. Spark también puede realizar el procesamiento por lotes, pero, realmente se destaca en las cargas de trabajo de transmisión, las consultas interactivas y el aprendizaje basado en máquinas.

Comparación: Spark vs Hadoop

La causa de que Spark sea tan rápido es porque procesa todo en la memoria.  El procesamiento en memoria de Spark otorga un análisis casi en tiempo real para datos de campañas de marketing, aprendizaje automático, sensores de Internet de las cosas, monitoreo de registros, análisis de seguridad y sitios de redes sociales.

Mientras que, MapReduce alternativamente utiliza un procesamiento por lotes y en realidad nunca fue construido para una velocidad asombrosa. Inicialmente, se configuró para recopilar información de sitios web y no hubo algún requisito para estos datos en tiempo real o casi en tiempo real.

Spark vs Hadoop: Facilidad de uso

Apache Spark es muy conocido por su facilidad de uso, ya que viene con API fáciles de usar para Scala, Java, Python y Spark SQL.

Spark también cuenta con un modo interactivo para que tanto los desarrolladores como los usuarios puedan tener comentarios inmediatos sobre consultas y otras acciones.

En cambio, Hadoop MapReduce no tiene modo interactivo, sin embargo, los complementos como Hive y Pig hacen que trabajar con MapReduce sea un poco más fácil para los adoptantes.

Hadoop vs Spark: Costos

Es importante recordar que tanto Hadoop MapReduce como Spark son proyectos de Apache, lo que significa que son productos de software libre y de código abierto. Si bien es cierto que no existe costo para el software, existen costos asociados con la ejecución de cualquiera de las plataformas en el personal y en el hardware. Los 2 productos están diseñados para funcionar en hardware básico.

MapReduce y Apache Spark se ejecutan en el mismo hardware, pero, entonces, ¿Cuáles son las diferencias de costos?

MapReduce utiliza cantidades estándar de memoria porque su procesamiento está basado en disco, por lo que una empresa tendrá que comprar discos más rápidos y mucho espacio en disco para ejecutar MapReduce. MapReduce de igual forma necesita más sistemas para distribuir la E / S del disco en múltiples sistemas.

Los sistemas Spark cuestan más debido a las grandes cantidades de RAM que se necesita para ejecutar todo en la memoria. Pero la ventaja es que la tecnología de Spark disminuye la cantidad de sistemas requeridos.

Spark vs Hadoop

Compatibilidad entre Spark y Hadoop

MapReduce y Spark son compatibles entre sí.

Spark comparte todas las compatibilidades de MapReduce para orígenes de datos, formatos de archivo y herramientas de inteligencia empresarial a través de JDBC y ODBC.

Spark vs Hadoop: Procesamiento de datos

MapReduce es un motor donde se procesa por lotes. MapReduce opera en pasos secuenciales al leer datos del clúster, realizar su operación en los datos, escribir los resultados nuevamente en el clúster, leer datos actualizados del clúster, realizar la siguiente operación de datos, escribir esos resultados nuevamente en el clúster, etc. .

Apache Spark realiza operaciones similares, sin embargo, lo hace en un solo paso y en la memoria. Lee datos del clúster, realiza su operación en los datos y luego los escribe de nuevo en el clúster.

Spark cuenta con su propia biblioteca de cálculo de gráficos, GraphX. GraphX, y permite a los usuarios ver los mismos datos como gráficos y colecciones. Los usuarios también pueden transformar y unir gráficas con conjuntos de datos distribuidos resilientes (RDD), discutidos en la sección Tolerancia a errores.

Spark vs Hadoop

Hadoop vs Spark: Tolerancia a fallos

MapReduce y Spark resuelven el problema desde dos direcciones diferentes. MapReduce utiliza TaskTrackers que brindan latidos al JobTracker. Si se pierde un latido, JobTracker reprograma todas las operaciones pendientes y en curso a otro TaskTracker. Este método es eficaz para proporcionar tolerancia a fallas, sin embargo, puede aumentar significativamente los tiempos de finalización para operaciones que tienen incluso un solo error.

Spark utiliza Datasets Distribuidos Resistentes (RDD), que son conjuntos de elementos tolerantes a fallas que pueden ser operados en paralelo. Los RDD pueden hacer referencia a un conjunto de datos en un sistema de almacenamiento externo, como un sistema de archivos compartido, HDFS, HBase o cualquier fuente de datos que ofrezca un Hadoop InputFormat. Spark puede crear RDD desde cualquier fuente de almacenamiento compatible con Hadoop, incluidos los sistemas de archivos locales o uno de los enumerados anteriormente.

Spark vs Hadoop: Escalabilidad

Tanto MapReduce como Apache Spark son escalables usando HDFS.

Informes indican que Yahoo tiene un clúster Hadoop de 42.000 nodos, por lo que tal vez el límite es interminable.

El clúster de Spark más grande conocido es de 8,000 nodos, pero a medida que crecen los grandes datos, se espera que los tamaños de clúster aumenten para mantener las expectativas de rendimiento.

Hadoop vs Spark: Seguridad

Hadoop admite la autenticación Kerberos, que es algo doloroso de administrar. Sin embargo, los proveedores externos han permitido a las organizaciones aprovechar Active Directory Kerberos y LDAP para la autenticación. Esos mismos proveedores de terceros también ofrecen cifrado de datos para vuelos y datos en reposo.

El Sistema de archivos distribuidos de Hadoop admite listas de control de acceso (ACL) y un modelo de permisos de archivos tradicional. Para el control del usuario en el envío de trabajos, Hadoop proporciona la Autorización de nivel de servicio, lo que garantiza que los clientes tengan los permisos adecuados.

La seguridad de Spark es un poco escasa al admitir actualmente solo la autenticación a través de un secreto compartido. La bonificación de seguridad que Spark puede disfrutar es que si ejecuta Spark en HDFS, puede usar ACL de HDFS y permisos de nivel de archivo. Además, Spark puede ejecutarse en YARN dándole la capacidad de usar la autenticación Kerberos.

Conclusiones: 

A simple vista, pareciera que el uso de Spark sería la opción predeterminada para cualquier aplicación de big data. Sin embargo, ese no es el caso. MapReduce ha incursionado en el mercado de big data para las empresas que necesitan grandes conjuntos de datos controlados por los sistemas de productos básicos. La velocidad, la agilidad y la  facilidad de uso de Spark son complementos perfectos del bajo costo de operación de MapReduce.

Hadoop nos ofrece características que Spark no posee, como un sistema de archivos distribuido y Spark proporciona procesamiento en tiempo real en la memoria para aquellos conjuntos de datos que lo requieren. El escenario perfecto de Big Data es exactamente como lo diseñaron los diseñadores, para que Hadoop y Spark trabajen juntos en el mismo equipo.

 

Comentarios

Puedes compartir este post si te gustó!