HADOOP COMMON HADOOP - HDFS HADOOP DISTRIBUTED FILE SYSTEM HADOOP MADREDUCE HADOOP – YARN YET ANOTHER RESOURCE NEGOTIATOR MapReduce es un algoritmo de procesamiento y búsquedas, que permite hacer consultas a una base de datos inmensa y obtener respuestas rápidas. Es capaz de enviar una orden a cada máquina para que busque en su disco duro, recolectar todas las contestaciones y ordenarlas para resolver la consulta. Cualidades No es una solución buena para trabajos que requieren de respuesta en tiempo real, es más bien recomendable para procesamiento offline de información. MapReduce es un framework de desarrollo que te permite aprovechar todas las ventajas de paralelismo que los ambientes que BigData te aportan, usando el concepto de dividir las tareas grandes en varias pequeñas, ejecutándolas en paralelo y ensamblando esos resultados al final en uno solo. HDFS, es el componente, que se encarga de manejar el pool o cluster de máquinas para almacenar todos nuestros archivos de BigData en ellas. Sin embargo, esas máquinas no sirven solo de repositorio, sino que también se utilizan para ejecutar procesos sobre esos datos. La manera de hacerlo es partiendo los datos en varios pedazos o Splits, y enviando cada pedazo a ser procesado independientemente de los otros y luego esos pedazos son integrados en un solo resultado final. Para hacer el procesamiento de dichos datos se usa el concepto de MapReduce, que consiste en tener tres procesos principales: Map, Shuffle y Reduce. Los procesos Map y Reduce son programados por nosotros, pero el de Shuffle lo hace automáticamente Hadoop. Primer Paso: Tomar los datos de entrada y particionarlos en pedazos llamados Splits. El Proceso de Map (en realidad son varios procesos Map corriendo exactamente el mismo código en paralelo en varias máquinas en el cluster) recibe una porción de la data de entrada llamada Split. En este proceso se produce como salida una lista de pares (clave1, valor1). Se puede ver como la data de entrada es particionada en tres Splits (Split1, Spli2 y Split 3), cada uno de los cuales va a un proceso Map independiente (Map1, Map2 y Map3) y que corre en paralelo con los otros, y que además cada proceso Map, produce su propia salida que depende de la data de entrada. Aquí vemos que el proceso Map1 produce dos pares de clave-valor, el Map2 otros dos pares y el Map3 solo un par. Una vez que el proceso Map ha terminado, comienza el proceso de Shuffle. Segundo Paso: El Proceso de Suffle encarga de tomar TODOS los pares (clave1, valor1) resultantes de todos los procesos Map ejecutados en paralelo, y agruparlos por clave, es decir, el formato seria (clave1, lista(valor1, valor2,…)) , con lo cual todos los valores que han resultado en los procesos Map que tienen la clave1, se agrupan en un solo y único par en donde se tiene la clave1, pero en donde los valores ahora son una lista de TODOS los valores de esa clave, ahora agrupados en una estructura semejante a una lista. Tercer Paso: El Proceso Reduce (no es solo uno, sino varios corriendo exactamente el mismo código en paralelo en varias máquinas del clúster) reciben los pares (clave1, lista(valor1.1, valor1.2, …) y producen una nueva salida de pares (clave2, valor2). Es decir, para todos los valores asociados a la clave1, se aplica alguna función que procesa esos valores y se produce una nueva salida (clave2, valor2). Luego todas las salidas de los Reduce son unificadas en una sola Ejemplo El de contar palabras. Se tomará un texto, el cual será particionado en varios Splits o “pedazos de texto” y en la Proceso de Map se separará este texto en palabras y se generará como salida por cada palabra, un par en donde la clave será la palabra encontrada, y el valor será el número 1. Primer Paso: Aplicando el Proceso de Map, consistirá en particionar la entrada en palabras, y por cada palabra generar un par cuya clave será la palabra encontrada y el número 1 como el valor, como se muestra a continuación: Se asume que se tendrá 4 procesos Map y 2 procesos Reduce, y que el texto a procesar será el siguiente: “Caminante, son tus huellas el camino y nada más; caminante, no hay camino, se hace camino al andar.” En este caso la entrada se partirá en 4 Splits, uno para cada proceso Map: Segundo Paso: Luego el proceso de Shuffle; que se ejecuta cuando todos los procesos Map han finalizado; se encargara de agrupar todas las salidas de todos los procesos Map y los agrupara por clave, este devolverá en el valor una lista de unos (1) correspondientes a todas las apariciones de la clave en todos los textos, y separara esta data en dos grupos de pares, pues en este ejemplo tendremos dos procesos de Reduce: Como podemos ver en la figura anterior la palabra caminante, luego del Shuffle, está en un par en donde ella es la clave, y cuyo valor es una lista que contiene el numero 1 dos veces. Tercer Paso: Finalmente, en la fase de Reduce, simplemente dejara la misma clave, que en este caso es la palabra a contar, y como valor producirá la suma de la lista de los números 1 que recibió como entrada, y las salidas de todos los procesos Reduce serán unificados en una sola salida: Conclusión: Como se puede ver el resultado que se obtuvo es un archivo que tiene por cada línea todas las palabras que aparecían en el texto de entrada, y cuyo valor es la cantidad de veces que la misma aparecía en el texto. Nótese por ejemplo como la palabra camino aparece 3 veces en el texto de entrada en varias líneas diferentes, y como en la salida aparecen correctamente contadas todas sus apariciones. Sí se desea hacer un programa MapReduce debes recordar que la clave es pensar sí la data de entrada que se dispone, puede ser particionada, para procesar los Splits en paralelo y seleccionar correctamente cual función se realizará en el Proceso de Map y cual en el Proceso de Reduce para que se produzca al final el resultado que se espera. https://elentornodehadoop.wordpress.com/ http://smarterworkspaces.kyocera.es/blog/diferencia-datos-estructurados-no-estructurados/ https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/SingleCluster.html https://www.sinnexus.com/business_intelligence/datamining.aspx https://blog.edx.org/aprender-ciencia-de-datos-eleccion-competitiva-o-mandatoetico?fbclid=IwAR3EB9LmEjn2PuL6q1XgXnUWXEOJmPoXMpHEpz2oSpITdGFij3tzAcZ2c0Y&track=blog&utm_campaign=nov142018%2Cblog&utm_medium=social& utm_source%3Desp=facebook http://smartbasegroup.com/introduccion-mapreduce/