sql >> Base de Datos >  >> RDS >> Database

Cómo funciona MapReduce en Hadoop

ReducirMapa fue un modelo introducido por Google como un método para resolver una clase de problemas de Big Data con grandes grupos de máquinas económicas. Hadoop absorbe este modelo en el núcleo de su proceso de trabajo. Este artículo brinda una idea introductoria del modelo MapReduce utilizado por Hadoop para resolver el problema de Big Data.

Resumen

Una aplicación típica de Big Data trata con un gran conjunto de datos escalables. El uso de una sola base de datos para almacenar y recuperar puede ser un cuello de botella de procesamiento importante. Esto es particularmente cierto si usamos una base de datos monolítica para almacenar una gran cantidad de datos, como podemos ver con las bases de datos relacionales y cómo se usan como un repositorio único. Esto no va a funcionar, especialmente si tenemos que lidiar con grandes conjuntos de datos en un entorno distribuido.

Google usó el algoritmo MapReduce para abordar la situación y encontró una solución. La idea es dividir la tarea más grande en partes manejables más pequeñas y distribuirlas entre las computadoras de la red para su procesamiento. El resultado así obtenido se integra para formar el conjunto de datos final. Esta idea se convirtió en la base del proyecto Hadoop de Doug Cutting. Hadoop utiliza este algoritmo para procesar datos en paralelo con otros para ofrecer un análisis estadístico completo de grandes conjuntos de datos. Por lo tanto, Hadoop se puede dividir groseramente en dos partes:

  • Procesamiento: Aprovechado por el algoritmo MapReduce
  • Almacenamiento: Aprovechado por HDFS

Hadoop MapReduce es, por lo tanto, una implementación del algoritmo desarrollado y mantenido por el proyecto Apache Hadoop. Funciona como una máquina en sí misma donde proporcionamos información y el motor responde transformando la información en información de manera rápida y eficiente, procesando a través de múltiples etapas. Esta idea abiertamente simplista necesita un poco de elaboración a medida que avanza.

MapaReducir

MapReduce es un modelo de programación paralelo utilizado para el procesamiento rápido de datos en un entorno de aplicación distribuida. Funciona en conjuntos de datos (múltiples terabytes de datos) distribuidos en clústeres (miles de nodos) en la red de hardware básico. Los programas de MapReduce se ejecutan en Hadoop y se pueden escribir en varios idiomas:Java, C++, Python y Ruby. Las principales características del programa MapReduce es que ha imbuido inherentemente el espíritu de paralelismo en los programas. Esto lo hace ideal para el análisis de datos a gran escala que puede aprovechar el modelo de paralelismo en su práctica para extraer resultados de manera más eficiente y rápida de una infraestructura existente.

Cómo funciona

Hadoop MapReduce divide las tareas en múltiples etapas, cada una con un conjunto significativo de funciones para extraer el resultado deseado de Big Data. Funciona en nodos en un clúster alojado en una colección de servidores básicos. El proceso comienza con la solicitud del usuario que ejecuta el motor MapReduce y termina con el resultado que se almacena nuevamente en HDFS.

Podemos iniciar un trabajo de MapReduce para que se ejecute invocando JobClient.runJob(conf) método. Este es un método conveniente para crear un nuevo JobClient instancia. Esto a su vez invoca submitJob() y sondea el progreso del trabajo cada segundo e informa a la consola si hay algún cambio desde que se generó el último informe. Esto tiene un efecto dominó y desencadena una serie de operaciones entre bastidores. El primer paso es encontrar y leer el archivo de entrada que contiene los datos sin procesar. El formato de archivo es arbitrario y debe convertirse a un formato apto para el procesamiento. Este es el trabajo para InputFormat y el RecordReader(RR) . El formato de entrada usa la función llamada InputSplit para dividir el archivo en partes más pequeñas. El RecorReader(RR) luego transforma los datos sin procesar y los pone a disposición para que los procese mapa .

Mapeo

Una vez que los datos son aceptables para mapear, crea una instancia distinta para cada par de entrada (clave y valor) y comienza a procesarse. Tan pronto como la función de mapeo comienza a generar resultados, no se escribe directamente en el disco; en cambio, se almacena en el búfer de memoria para realizar una clasificación previa. Cada mapa mantiene un búfer circular donde redirige la salida. Al exceder el tamaño del umbral, el derrame de contenido se vuelve a escribir en el disco. Además, divide los datos en particiones aceptables para el reductor al que se redirigen los datos a continuación. Sin embargo, todos estos trabajos se llevan a cabo de manera simultánea en varios nodos del clúster de Hadoop. Después de completar las tareas del mapa, los resultados intermedios se acumulan en la partición, y se mezclan y clasifican para optimizar la salida para que reduce tome el control como entrada.

Reducir y fusionar

Lo que obtiene reduce también es un par clave, valor y actúa de manera similar al mapa. Recopila la salida del mapa de varias tareas de mapa en todo el clúster y comienza a procesar solo después de que se completa el mapeo. Tiene un conjunto de subprocesos de copia para fusionar y verter en el disco la salida proporcionada por el mapa. A medida que las copias se acumulan en el disco, un subproceso de fondo hace el trabajo de fusionarlas en archivos más grandes y ordenados. También proporciona la salida en forma de clave, par de valores y es posible que deba ser reformateado por el OutputFormat antes de que la aplicación pueda aceptar el formato. El Formato de salida finalmente toma la clave, el par de valores y vuelve a escribir los datos procesados ​​en HDFS. Aquí, RecordWriter juega el papel principal, al igual que RecordReader , excepto que participa mientras lee de HDFS al principio.

Conclusión

Esto es sólo la punta del iceberg. Hay muchos detalles intrincados y mucho más sucede detrás de escena. En resumen, Hadoop MapReduce brinda las capacidades para dividir Big Data en partes más pequeñas y manejables, procesarlas en paralelo en un clúster distribuido y, finalmente, hacer que los datos estén disponibles para consumo o procesamiento adicional. Hadoop hoy ha crecido hasta convertirse en un ecosistema más grande de herramientas y tecnologías para resolver problemas de Big Data de última generación y está evolucionando rápidamente para refinar sus funciones.