Entrada divide en MapReduce de Hadoop

La forma HDFS se ha establecido, se descompone muy grandes archivos en bloques grandes (por ejemplo, la medición de 128 MB), y almacena tres copias de estos bloques en diferentes nodos del clúster. HDFS no tiene conciencia del contenido de estos archivos.

En HILO, cuando se inicia un trabajo MapReduce, el Administrador de recursos (la gestión de recursos de clúster y la facilidad de programación de trabajos) crea un daemon maestro de aplicaciones para cuidar el ciclo de vida del trabajo. (En Hadoop 1, el JobTracker supervisa los trabajos individuales, así como el manejo de la planificación de tareas y gestión de recursos de clúster.)

Una de las primeras cosas que la Aplicación Maestro hace es determinar que se necesitan bloques de archivos para su procesamiento. La aplicación Maestro pide detalles del NameNode en donde se almacenan las réplicas de los bloques de datos necesarios. Utilizando los datos de ubicación de los bloques de archivos, la Aplicación Maestro hace peticiones al Administrador de recursos tengan tareas mapa procesar bloques específicos sobre los nodos esclavos donde están almacenados.

La clave para el procesamiento MapReduce eficiente es que, siempre que sea posible, se procesan los datos localmente - en el nodo esclavo, donde se almacena.

Antes de ver cómo se procesan los bloques de datos, es necesario mirar más de cerca cómo almacena los datos de Hadoop. En Hadoop, los archivos se componen de registros individuales, que son en última instancia procesadas uno por uno por tareas Mapper.

Por ejemplo, el conjunto de datos de muestra contiene información sobre vuelos completados dentro de los Estados Unidos entre 1987 y 2008.

Para descargar el conjunto de datos de muestra, abra el navegador Firefox desde dentro de la máquina virtual, e ir a la página de dataexpo.

Usted tiene un archivo grande para cada año, y dentro de cada archivo, cada línea individual representa un solo vuelo. En otras palabras, una línea representa un registro. Ahora, recuerde que el tamaño de bloque para el clúster Hadoop es de 64 MB, lo que significa que los archivos de datos de luz se rompen en pedazos de exactamente 64 MB.

¿Ves el problema? Si cada tarea mapa procesa todos los registros en un bloque de datos específico, ¿qué sucede con aquellos registros que abarcan límites de los bloques? Bloques de archivos son exactamente 64 MB (o lo que se establece el tamaño de bloque a ser), y porque HDFS no tiene idea de lo que hay dentro de los bloques de archivos, no se pueden medir cuando un registro podría extenderse a otro bloque.

Para resolver este problema, Hadoop utiliza una representación lógica de los datos almacenados en bloques de archivo, conocidos como divisiones de entrada. Cuando un cliente de trabajo MapReduce calcula las divisiones de entrada, que se da cuenta de que el primer disco entero en un bloque comienza y donde termina el último registro en el bloque.

En los casos en que el último registro en un bloque es incompleta, la división de entrada incluye información de ubicación para el siguiente bloque y el desplazamiento de los datos necesarios para completar el registro de bytes.

La figura muestra esta relación entre los bloques de datos y escisiones de entrada.

imagen0.jpg

Puede configurar el daemon maestro de aplicaciones (o JobTracker, si estás en Hadoop 1) para calcular la entrada se divide en lugar del cliente de trabajo, lo que sería más rápido para los puestos de trabajo de procesamiento de un gran número de bloques de datos.

Procesamiento de datos MapReduce es impulsado por este concepto de divisiones de entrada. El número de divisiones de entrada que se calcula para una aplicación específica determina el número de tareas Mapper. Cada una de estas tareas asignador se asigna, cuando sea posible, a un nodo esclavo donde se almacena la división de entrada. El Administrador de recursos (o JobTracker, si estás en Hadoop 1) hace todo lo posible para garantizar que la entrada divisiones se procesan localmente.




» » » » Entrada divide en MapReduce de Hadoop