Cómo escribir aplicaciones MapReduce

La API de MapReduce está escrito en Java, por lo que las aplicaciones MapReduce son principalmente basados ​​en Java. La siguiente lista especifica los componentes de una aplicación MapReduce que se puede desarrollar:

  • Conductor (obligatorio): Esta es la cáscara de aplicación que se invoca desde el cliente. Configura la clase MapReduce (que no personaliza) y lo presenta al Administrador de recursos (o JobTracker si usted está utilizando Hadoop 1).

  • clase (obligatorio): La clase que implementar necesidades para definir los formatos de los pares clave / valor que la entrada y salida como se procesa cada registro. Esta clase tiene un solo método, que es donde se codifican cómo se procesa cada registro y lo clave / valor de salida. Para dar salida a pares clave / valor de la tarea asignador, escribirlos en una instancia de la clase.

  • clase (opcional): El reductor es opcional para aplicaciones de mapa sólo cuando la fase Reducir no se necesita.

  • clase (opcional): Un combinador de frecuencia se puede definir como un reductor, pero en algunos casos tiene que ser diferente. (Recuerde, por ejemplo, que un reductor puede no ser capaz de ejecutar varias veces en un conjunto de datos sin mutar los resultados.)

  • clase (opcional): Personaliza la herramienta de particionado predeterminada para realizar tareas especiales, como una especie secundaria en los valores para cada tecla o para casos excepcionales relacionados con la escasez de datos y archivos de salida desequilibrada de las tareas Mapper.

  • andclasses (opcional): Hadoop tiene algunos formatos de datos estándar (por ejemplo, archivos de texto, archivos de secuencias, y bases de datos), que son útiles para muchos casos. Para los datos formateados específicamente, la implementación de sus propias clases para leer y escribir datos puede simplificar en gran medida su asignador y el código reductor.

Desde dentro del controlador, puede utilizar la API de MapReduce, que incluye métodos de fábrica para crear instancias de todos los componentes en la lista anterior. (En caso de que usted no es una persona de Java, un método de fábrica es una herramienta para la creación de objetos.)

Un API genérico llamado Hadoop Streaming le permite utilizar otros lenguajes de programación (más comúnmente, C, Python y Perl). Aunque esta API permite a las organizaciones con las habilidades no-Java para escribir código MapReduce, utilizando tiene algunas desventajas.

Debido a las capas de abstracción adicionales que este código de transmisión tiene que pasar por el fin de funcionar, hay una penalización en el rendimiento y el aumento de uso de memoria. También, usted puede codificar funciones asignador y reductor únicamente con Hadoop Streaming. Lectores y escritores de registro, así como todos sus divisores, necesitan ser escritas en Java.

Una consecuencia directa - y la desventaja adicional - de no poder personalizar los lectores de discos y escritores es que las aplicaciones Hadoop Streaming son muy adecuadas para manejar sólo los datos basados ​​en texto.


» » » » Cómo escribir aplicaciones MapReduce