reducción que google función firma example concepto basa algoritmo hadoop mapreduce hdfs

google - Tamaño dividido vs Tamaño de bloque en Hadoop



mapreduce google (2)

¿Cuál es la relación entre el tamaño dividido y el tamaño de bloque en Hadoop? Mientras leo en esto , el tamaño dividido debe ser n veces el tamaño del bloque (n es un número entero yn> 0), ¿es correcto? ¿Hay alguna obligación en la relación entre el tamaño dividido y el tamaño del bloque?


  • Supongamos que tenemos un archivo de 400 MB con consta de 4 registros ( por ejemplo, un archivo csv de 400 MB y tiene 4 filas, 100 MB cada uno)

  • Si el Tamaño de bloque HDFS está configurado como 128 MB , los 4 registros no se distribuirán entre los bloques de manera uniforme. Se verá así.

  • El bloque 1 contiene el primer registro completo y un fragmento de 28 MB del segundo registro.
  • Si se va a ejecutar un asignador en el Bloque 1 , el asignador no puede procesar, ya que no tendrá el segundo registro completo.

  • Este es el problema exacto que las divisiones de entrada resuelven. Las divisiones de entrada respetan los límites del registro lógico.

  • Supongamos que el tamaño de la entrada dividida es de 200 MB

  • Por lo tanto, la división de entrada 1 debe tener tanto el registro 1 como el registro 2. Y la división de entrada 2 no comenzará con el registro 2 ya que el registro 2 se asignó a la división de entrada 1. La división de entrada 2 comenzará con el registro 3.

  • Esta es la razón por la cual una división de entrada es solo una porción lógica de datos. Apunta a las ubicaciones de inicio y final en bloques.

  • Si el tamaño de la división de entrada es n veces el tamaño del bloque, una división de entrada podría ajustarse a varios bloques y, por lo tanto, se necesita menos cantidad de Mappers para todo el trabajo y, por lo tanto, menos paralelismo. (El número de mapeadores es el número de divisiones de entrada)

  • tamaño dividido de entrada = el tamaño de bloque es la configuración ideal.

Espero que esto ayude.


En la arquitectura HDFS hay un concepto de bloques. Un tamaño de bloque típico utilizado por HDFS es 64 MB. Cuando colocamos un archivo grande en HDFS lo cortamos en trozos de 64 MB (según la configuración predeterminada de los bloques), supongamos que tiene un archivo de 1 GB y desea colocar ese archivo en HDFS, luego habrá 1 GB / 64 MB = 16 dividir / bloques y estos bloques se distribuirán a través de los DataNodes. Estos bloques / fragmento residirán en un DataNode diferente diferente según la configuración de su clúster.

La división de datos ocurre en función de las compensaciones de archivos. El objetivo de dividir el archivo y almacenarlo en diferentes bloques es el procesamiento en paralelo y la conmutación por error de los datos.

Diferencia entre el tamaño del bloque y el tamaño dividido.

Split es la división lógica de los datos, básicamente utilizada durante el procesamiento de datos utilizando el programa Map / Reduce u otras técnicas de procesamiento de datos en Hadoop Ecosystem. El tamaño dividido es un valor definido por el usuario y puede elegir su propio tamaño dividido en función de su volumen de datos (la cantidad de datos que está procesando).

Split se usa básicamente para controlar el número de Mapper en el programa Map / Reduce. Si no ha definido ningún tamaño de división de entrada en el programa Map / Reduce, la división de bloques HDFS predeterminada se considerará como división de entrada.

Ejemplo:

Supongamos que tiene un archivo de 100 MB y la configuración de bloques por defecto de HDFS es de 64 MB, luego se dividirá en 2 divisiones y ocupará 2 bloques. Ahora tiene un programa de Mapa / Reducir para procesar estos datos pero no ha especificado ninguna división de entrada, en función del número de bloques (2 bloques), se considerará la división de entrada para el procesamiento de Mapa / Reducir y se asignará 2 asignador para este trabajo.

Pero supongamos que ha especificado el tamaño dividido (digamos 100MB) en su programa de Mapa / Reducir, entonces ambos bloques (2 bloques) se considerarán como una división única para el procesamiento de Mapa / Reducción y 1 asignador será asignado para este trabajo.

Supongamos que ha especificado el tamaño dividido (digamos 25 MB) en su programa Map / Reduce, luego habrá 4 entradas divididas para el programa Map / Reduce y 4 Mapper se asignarán para el trabajo.

Conclusión:

  1. Split es una división lógica de los datos de entrada mientras que el bloque es una división física de datos.
  2. El tamaño de bloque predeterminado de HDFS es el tamaño de división predeterminado si no se especifica la división de entrada.
  3. Split está definido por el usuario y el usuario puede controlar el tamaño dividido en su programa Map / Reduce.
  4. Una división puede mapearse a varios bloques y puede haber una división múltiple de un bloque.
  5. El número de tareas de mapa (Mapper) es igual al número de divisiones.