Hadoop Hive Spark
La intención de hoy es mostrar el que, el por qué y el para qué de estas renombradas tecnologías, con el fin de poder acercar un poco más estas tecnologías a su toolkit, espero con esto abrir una categoría que apunta al software engineering. dónde muchos de los problemas de big data son tratados como factory de software.
Se introducirá en tecnologías tales como:
- Hadoop
- Hive
- Spark
Hadoop
Este proyecto es uno de los más mencionados cuando se habla de big data, trata de una serie de proyectos open source reunidos y que es mantenido por apache software foundation en la actualidad este proyecto se encuentra sin muchos avances pero sentó bases en la computación paralela al absorber las configuraciones para su paralelización de tareas y trajo consigo 2 grandes facultades que hoy en día facilitan el dia a dia MapReduce y el HDSF como distribución de archivos de sistema, en este post omito yarn dado que la administración/orquestación existen mejores herramientas en mercado y otras herramientas como Apache Pig no son el foco de este post.
HDFS – Hadoop Distributed File System
Orientado en el manejo de grandes cantidades de datos su gran tarea es rediseñar la data para distribuirla en la cantidad de nodos que posea, con gran tolerancia a fallos dado su sistema redundante entre nodos, facilita el manejo de data a gran escala y se enfoca en la creación de bloques de esta repartida en diversos nodos.
MapReduce
Uno de los paradigmas de procesamiento en Big Data más popular es el llamado MapReduce se basa en un principio de subdividir tareas en subtareas y distribuir la carga entre múltiples unidades.En el caso de MapReduce la data se refleja en las máquinas que se encuentran dentro del cluster, el problema en Hadoop es que no está optimizado para el uso de memoria y además recarga mucho al desarrollador para solucionar tareas del tipo MapReduce, es por eso que en una capa superior a Hadoop se encuentra Apache Hive el cual soluciona un poco alguno de los problemas mencionados.
Hive
Inicialmente elaborado por facebook y luego mantenido por Apache Software Foundation se presenta en una capa superior al ecosistema de Hadoop, dado que utiliza éste como base para poder ejecutar en forma de query los comandos lo cual es llamado hive sql aunque su paradigma inició en torno a MapReduce hoy en día se encuentra alineado con un monto de otras herramientas que complementan este software.
Spark
Originalmente creado en Berkeley’s AMPLab este software pasó a ser uno de los productos estrella hoy en dia de la apache software foundation es Apache Spark, con notorias mejoras sobre sus pares al momento de dar una solución en el procesamiento paralelo de data en un cluster, Spark presenta una mejora en el uso de recursos dado que se enfoca en procesar en memoria y no en discos sólidos (lo cual en sistemas es mucho más rápido).
Rdd – Resilient Distributed Datasets
La arquitectura de spark se basa en el concepto RDD el cual en resumen es una estructura de datos dedicada a mantener la data en múltiples nodos, siendo inmutables por naturaleza dado que en caso de aplicar un filter o map nuevo se genera un nuevo RDD lo cual simplifica mucho las tareas recurrentes.
Una de las cosas que personalmente me llamo la atención al trabajar con RDD es el que omite el uso de columnas nombradas como en los dataframe en el mundo de data análisis, si no mas bien se transforma en un tipo de tupla en python y se limita a generar transformations o actions.
Al interiorizar en spark descubrimos una interface en python, Scala o R el cual lleva a nuestro lenguaje favorito el poder de Spark, lo cual abstrae la mayoría de problemas en computación paralela y manejo de data que conlleva spark por si solo.
En un ciclo de software es posible automatizar tareas y generar pipelines de datos una vez utilizas tu librería pyspark en el caso de python escalando al próximo nivel.
Con esto finaliza una breve introducción a los fundamentos del big data, espera un nuevo post sobre esto y más!.