Implementación de Combiner y trabajo interno.
Quiero usar un combinador en mi código MR, por ejemplo WordCount.
¿Cómo debo implementarlo?
¿Qué tipo de datos se pasan al reductor desde el combinador?
Sería fantástico si alguno de ustedes pudiera proporcionarme códigos tanto del Combinador como del Reductor.
Será mejor si puedes explicar cómo funciona el combinador.
Soy nuevo en mapreduce y estoy en una etapa de aprendizaje.
Gracias de antemano :)
el combinador está haciendo el mismo trabajo que el reductor, puede implementar la interfaz del reductor y anular su método de reducción. Si usa el combinador, una cantidad menor de ancho de banda de la red es suficiente para transferir el intermedio (o/p del asignador) al reductor.
puede usar el mismo código del método de reducción (pertenece a su propio reductor) en el método de reducción del combinador si su aplicación utilizada en el reductor obedece tanto a la conmutativa como a la asociativa.
No existe una regla para ejecutar el combinador incluso si escribe el combinador para su aplicación MR (reducción de mapas). Para ejecutar el combinador, asegúrese de que la cantidad de derrames debe ser al menos 3.
por ejemplo, la salida de mi asignador es,,,,,<34>. Sin combinador, mi entrada al reductor es. Con el combinador, puedo pasar la entrada al reductor es como.
Combiner
se utiliza entre el mapeador y el reductor para reducir la cantidad de transferencia de datos entre el mapa y la fase de reducción.
Combiner
La implementación es similar a la implementación del reductor. Debería implementar el método de reducción de la interfaz de reducción. Los pares de valores clave de entrada y salida deben ser similares a los del reductor.
En nuestro controlador podemos mencionar nuestra clase de reductor como combinador.
job.setCombinerClass(MyReducer.class)
Combiners
sólo se puede utilizar en funciones conmutativas y asociativas.
For example maximum of numbers
Map 1 output - (23,27, 31) -> Combiner -> 31
Map 2 output - (22,36,33,45) -> Combiner -> 45
Map 3 output - (41,33,15,16) -> Combiner -> 41
Combiner acts on each of the mapper's output.
Combiner output - (31,45,41) ->Reducer -> 45
La cantidad de transferencia de datos ahora se reduce, como se desprende del ejemplo.