¿Es mejor utilizar el paquete mapred o mapreduce para crear un trabajo de Hadoop?

Para crear trabajos de MapReduce, puede usar el paquete org.apache.hadoop.mapred o el paquete org.apache.hadoop.mapreduce más nuevo para Mappers y Reductores, Trabajos … El primero se marcó como obsoleto, pero esto se revertió mientras tanto. Ahora me pregunto si es mejor usar el viejo paquete mapred o el nuevo paquete mapreduce para crear un trabajo y por qué. ¿O solo depende de si necesita cosas como MultipleTextOutputFormat, que solo está disponible en el paquete mapred anterior?

Funcionalidad sabia que no hay mucha diferencia entre la oahmapred anterior ( oahmapred ) y la nueva ( oahmapreduce ). La única diferencia significativa es que los registros se envían al asignador / reductor en la antigua API. Mientras que la nueva API admite ambos mecanismos de extracción / extracción. Puede obtener más información sobre el mecanismo de extracción aquí .

Además, la antigua API no ha sido desaprobada desde 0.21. Puede encontrar más información sobre la nueva API aquí .

Como mencionaste, algunas de las clases (como MultipleTextOutputFormat) no se han migrado a la nueva API, debido a esto y al motivo mencionado anteriormente, es mejor seguir con la API anterior (aunque una traducción suele ser bastante simple).

Tanto las API antiguas como las nuevas son buenas. La nueva API es más limpia. Use la nueva API siempre que pueda, y use la anterior donde necesite clases específicas que no estén presentes en la nueva API (como MultipleTextOutputFormat )

Pero tenga cuidado de no utilizar una combinación de API antiguas y nuevas en el mismo trabajo de Mapreduce. Eso lleva a problemas extraños.

Antigua API (mapred)

  1. Existe en el paquete org.apache.hadoop.mapred

  2. Proporcionar una configuración de trabajo de mapa / reducir.

  3. Reduce los valores de una clave determinada, en función del iterador
  4. Resumen del paquete

Nueva API (mapreduce)

  1. Existe en el paquete org.apache.hadoop.mapreduce

  2. La configuración del trabajo se realiza por clase separada, denominada JobConf, que es la extensión de la Configuración
    Clase

  3. Reduce los valores de una clave determinada, en función de Iterable

  4. Resumen del paquete