Esta es una pregunta conceptual que involucra Hadoop/HDFS. Digamos que tienes un archivo que contiene mil millones de líneas. Y por simplicidad, consideremos que cada línea tiene el formato <k,v>
donde k es el desplazamiento de la línea desde el principio y el valor es el contenido de la línea.¿Cómo realiza Hadoop las divisiones de entrada?
Ahora, cuando decimos que queremos ejecutar N tareas de mapa, ¿el marco divide el archivo de entrada en N divisiones y ejecuta cada tarea de mapa en esa división? ¿O tenemos que escribir una función de partición que realice las divisiones N y ejecutar cada tarea de mapa en la división generada?
Todo lo que quiero saber es si las divisiones se hacen internamente o si tenemos que dividir los datos manualmente?
Más específicamente, cada vez que se llama a la función map() ¿cuáles son sus parámetros Key key and Value val
?
Gracias, Deepak
¿El asignador en una máquina de acceso a los datos en otras máquinas demasiado o simplemente procesa los datos en su máquina? – Deepak
El ejemplo predeterminado de conteo de palabras en el sitio de Hadoop no usa InputFormat. ¿Qué sucede si llamo a n tareas de mapa en ese ejemplo? ¿Cada tarea de mapa accede a todo el contenido del archivo? Gracias de nuevo. – Deepak
Antes que nada, gracias por la votación :-) --- El ejemplo de wordcount usa TextInputFormat, que debería ser una subclase de InputFormat. --- Dado que el número de divisiones coincide con el número de mapeadores, cada mapeador procesará muy probablemente los datos más cercanos a él. Por supuesto, él podría acceder a otras máquinas, pero esto se evita debido a sus costos. –