Particionador de Hadoop: información sobre introducción, sintaxis e implementación
Publicado: 2020-05-14El objetivo fundamental de este tutorial de Hadoop Partitioner es brindarle una definición punto por punto de cada parte que se utiliza en Hadoop. En esta publicación, cubriremos el significado de Hadoop Partitioner, la necesidad de un Partitioner en Hadoop y un caso pobre de Hadoop Partitioner.
Entendamos qué es Hadoop Partitioner.
Tabla de contenido
¿Qué es el particionador en Hadoop?
Un Particionador permite difundir cómo van las salidas desde la etapa del mapa a los reductores.
El particionador controla el segmento clave de las salidas del mapa central. La clave o un subconjunto de la clave se utiliza para inferir la partición mediante una función hash.
De hecho, la estructura de Hadoop es un particionador basado en hash. Esta función hash en Hadoop ayuda a derivar la partición.
La partición funciona en la salida del mapeador según el valor de la clave. El mismo valor clave entra en la misma partición dentro de cada asignador. Después de este proceso, la partición final se envía a un reductor.

La clase de una partición decide dónde irá el par de clave y valor. La fase de partición cae en el medio del mapa y reduce las fases.
Veamos por qué existe la necesidad de un particionador de Hadoop.
¿Cuál es la necesidad de un particionador Hadoop?
Se toma un conjunto de datos de entrada y se produce una lista de pares de clave y valor en la fase de trabajo de la arquitectura MapReduce. Estos pares de clave y valor se forman en la fase de mapa. Esto sucedió cuando los datos de entrada se dividen, que luego son procesados por cada tarea y mapa, produciendo una lista de pares clave y valor.
Sin embargo, la partición del mapa ocurre justo antes de la fase de reducción, según la clave y el valor. De esta manera, todas las claves de los mismos valores se agrupan y van al mismo reductor. Por lo tanto, incluso se asegura la distribución de la salida del mapa en el reductor.
La partición Hadoop MapReduce permite una distribución uniforme de la salida del mapeador sobre el reductor al garantizar que la clave correcta vaya al reductor correcto.
Leer : Salario de desarrollador de Hadoop en India
Sintaxis del particionador hash en Hadoop
Esta es la sintaxis predeterminada de un particionador hash en Hadoop.
getPartition public int (clave K, valor V
int numReduceTasks)
{
return(key.hashCode() & Integer.MAX_VALUE) % numRedudeTasks;
}
Implementación del particionador de Hadoop
Para ver un ejemplo del uso de Hadoop Partitioner en aplicaciones prácticas, veamos la siguiente tabla que contiene datos de los residentes en un bloque de un edificio.
Número plano | Nombre | Género | Miembros de la familia | Factura de electricidad | |
1101 | manisha | Mujer | 3 | 1500 | |
1102 | Deepak | Masculino | 4 | 2000 | |
1103 | Sanjay | Masculino | 3 | 1100 | |
1104 | Nidi | Mujer | 2 | 900 | |
1105 | Prateek | Masculino | 1 | 650 | |
1106 | Gopal | Masculino | 4 | 1800 | |
1107 | Samiksha | Mujer | 2 | 1300 |
Ahora escribamos un programa para encontrar la factura de electricidad más alta por género en diferentes grupos de miembros de la familia: 2 a 3 y menos de 4.

Los datos proporcionados se guardan como input.txt en el directorio "/home/Hadoop/HadoopPartitioner".
La clave sigue un patrón: clave especial + nombre de archivo + número de línea. Por ejemplo,
tecla = entrada@1
Para esto, el valor sería
valor = 1101 \t Manisha \t Mujer \t 3 \t 1500
Así es como sería la operación:
- Leer valor
- Use la función de división para separar los géneros y almacenarlos en una variable de cadena
Cadena[] str = valor.toString().split(“\t”, -2);
Cadena género = str[2];
- Ahora envíe información de género y registre el valor de los datos como ley y par de valores a la tarea de partición
context.write(texto nuevo(género), texto nuevo(valor));
- Repetir para todos los registros
Como salida, obtendrá los datos de género ordenados y el valor de los datos como pares de clave y valor.
Así es como iría la tarea del particionador.
Primero, el particionador tomará como entrada los pares clave y valor que se le envían. Ahora, dividirá los datos en diferentes segmentos.
Aporte
clave = valor de campo de género
valor = valor de registro de ese género
Así es como seguirá el proceso.
- Leer el valor del miembro de la familia del par de valores clave
Cadena[] str = valor.toString().split(“\t”);
int edad = Integer.parseInt(str[3]);
- Verifique el valor de los miembros de la familia con las siguientes condiciones
- Familiares de 2 a 3
- Miembros de la familia menos de 4
si (miembros de la familia <4)
{
devolver 0;
}
else if(miembros de la familia>=2 && miembros de la familia<=3)
{
devuelve 1 % numReduceTasks;
}
demás
{
volver 2 % numReduceTasks;
}
Producción
Los datos de los pares clave y valor se segmentarán en las tres colecciones dadas.
Lea también: Las mejores herramientas de Hadoop que debe conocer
Particiones deficientes y superación de las mismas
Supongamos que puede predecir que una de las claves en sus datos de entrada aparecerá más que cualquier otra clave. Por lo tanto, es posible que deba enviar toda su clave (un gran número) a una partición y luego, distribuir las claves restantes en todas las demás particiones por su hashCode().
Entonces, ahora tiene dos mecanismos para enviar información a las particiones:
- Primero, la clave que muestra más se enviará a una partición
- En segundo lugar, todas las claves restantes se enviarán a las particiones según su hashCode().
Ahora, supongamos que su técnica hashCode() no distribuye adecuadamente las otras claves sobre las particiones. Por lo tanto, la información no circula por igual en particiones y reductores. Esto se debe a que cada partición es proporcional a un reductor.

Por lo tanto, ciertos reductores tendrán una mayor cantidad de datos que otros reductores. Por lo tanto, los reductores restantes tendrán que esperar por un reductor (uno con claves definidas por el usuario) debido a la carga disponible.
En este caso, debe seguir una metodología que comparta los datos entre diferentes reductores. Obtenga más información sobre Hadoop con nuestro último tutorial de Hadoop.
Conclusión
Esperamos que esta guía sobre particiones de Hadoop le haya sido útil. Para obtener más información sobre este tema, póngase en contacto con los expertos de upGrad y lo ayudaremos a navegar.
Si está interesado en saber más sobre Big Data, consulte nuestro programa PG Diploma in Software Development Specialization in Big Data, que está diseñado para profesionales que trabajan y proporciona más de 7 estudios de casos y proyectos, cubre 14 lenguajes y herramientas de programación, prácticas talleres, más de 400 horas de aprendizaje riguroso y asistencia para la colocación laboral con las mejores empresas.
Aprenda cursos de desarrollo de software en línea de las mejores universidades del mundo. Obtenga Programas PG Ejecutivos, Programas de Certificado Avanzado o Programas de Maestría para acelerar su carrera.
