lunes, 5 de marzo de 2018

Apache Spark y Hadoop


Hadoop tiene alrededor de 10 años y ha demostrado ser una buena solución big data.

MapReduce es una gran solución para cálculos de un solo paso, pero no es eficiente para casos de uso que requieren cálculos y algoritmos de múltiples pasos.

Cada paso en el flujo de trabajo de procesamiento de datos tiene una fase de map y una fase de reduce y para usar esta tecnica tendremos que convertir cada paso en un patrón de MapReduce.

La salida del procesamiento de cada paso es guardado en discos distribuidos y luego esto es tomado como entrada para el siguiente paso. Como se puede ver no es una visión muy eficiente. También Hadoop generalmente se utiliza en cluster que son difíciles de configurar. A la vez Hadoop necesita otras herramientas para la integración como Apache storm para el manejo de streaming y Mahout para machine learning.

Si quisiéramos hacer algo complicado, tendríamos que encadenar una serie de trabajos de MapReduce y ejecutarlos en secuencia. Cada uno de esos trabajos tiene una alta latencia, y ninguno podría comenzar hasta que el trabajo anterior había terminado por completo.

Spark permite a los programadores desarrollar tuberías de datos complejas de varios pasos usando el patrón de gráfico acíclico dirigido (DAG). También es compatible con el uso compartido de datos en memoria en los DAG, por lo que diferentes trabajos pueden funcionar con los mismos datos sin tener que volver a calcular los datos para cada paso.

Spark se ejecuta sobre la infraestructura existente del sistema de archivos distribuidos Hadoop (HDFS) para proporcionar funcionalidad adicional. Proporciona soporte para implementar aplicaciones Spark en un clúster Hadoop v1 existente (con SIMR: Spark Inside MapReduce), Hadoop v2 YARN cluster, o incluso Apache Mesos.

Deberíamos considerar a Spark como una alternativa a Hadoop MapReduce para nuevas aplicaciones si ya estamos usando Hadoop en nuestra organización, en lugar de reemplazar completamente a Hadoop. Spark no pretende reemplazar a Hadoop, sino proporcionar una solución integral y unificada para administrar los diferentes requisitos de big data y casos de uso.