Red de conocimiento informático - Conocimiento informático - Cómo enviar tareas informáticas MapReduce de Yarn a través de programas Java

Cómo enviar tareas informáticas MapReduce de Yarn a través de programas Java

Debido a las necesidades del proyecto, necesitamos enviar las tareas MapReduce de Yarn a través de programas Java. A diferencia del envío habitual de tareas de MapReduce a través de paquetes Jar, el envío de tareas de MapReduce a través de programas requiere ligeras modificaciones. Consulte el código a continuación para obtener más detalles.

El siguiente es el programa principal de MapReduce. Hay varios puntos que deben mencionarse:

1. En el programa, configuraré el formato de archivo de lectura en WholeFileInputFormat, es decir. , el archivo no se procesará.

2. Para controlar el procesamiento de reducción, el formato de la clave de salida del mapa es una combinación de formatos de clave. A diferencia de la normal, se cambia a y el formato del Par de Textos es .

3. Para adaptarse a la combinación de teclas, restablezca la función de agrupación, es decir, GroupComparator. La regla de agrupación es que siempre que la clave1 en TextPair sea la misma (no es necesario que la clave2 sea la misma), los datos se asignan a un contenedor de restauración. De esta manera, cuando los datos con la misma clave1 ingresan al contenedor de restauración, la clave2 desempeña el papel de identificador de datos.

paquete web.Hadoop;

importar java.io.IOException;

importar org.apache.hadoop.conf.JobConf; >importar org.apache.hadoop.mapred.JobStatus;

importar org.apache.hadoop.mapreduce.Job

importar org.apache.hadoop.mapreduce.lib.input; FileInputFormat;

importar org.apache.Utils;

clase pública GEMIMain {

public GEMIMain(){

trabajo = null;

}

trabajo de trabajo público;

clase estática pública NamePartitioner extiende

Partitioner<TextPair, BytesWritable> {

@Override

public int getPartition(Clave TextPair, valor BytesWritable,

int numPartitions) {

return Math.abs(key.getFirst(). hashCode() * 127) % numParticiones;

}

}

}

/**

* La clase de configuración de agrupación hace que dos TextPairs pertenezcan al mismo grupo siempre que sus primeras claves sean las mismas. Sus valores luego se colocarán en un iterador de valores,

* y luego en el método de reducción del reductor.

*

* @author hduser

*

*/

clase estática pública GroupComparator extiende WritableComparator {

public GroupComparator() {

super(TextPair.class, true);

}

@Override

public int compare(WritableComparable a, WritableComparable b) {

TextPair t1 = (TextPair) a;

TextPair t2 = (TextPair) b;

// Si los resultados de la comparación son iguales, devuelve 0; si son diferentes, devuelve -1

devuelve

ClassNotFoundException, InterruptedException {

Configuración. conf = new Configuration();

// Establece la variable de salida en conf para que esté disponible en la función de reducción

conf.set("outputPath", args[args.length - 1] .toString());

// Establece la carpeta HDFS donde se ubican los archivos de calidad del producto para cada tarea. Es la carpeta donde se encuentra el archivo de calidad

conf.set("qualityFolder", args[args.length - 2].toString());

//Si ejecuta en el Servidor, necesita obtener la ruta raíz del proyecto web; si lo depura como una aplicación Java, lee la ruta raíz de /etc/hadoop-2.opt/hadoop-2.5.0/etc/hadoop/; directorio

//MapReduceProgress mprogress = new MapReduceProgress();

//String rootPath= mprogress.rootPath;

String rootPath="/opt/hadoop- 2.5.0/etc/hadoop/";

conf.addResource(nueva ruta(rootPath+"yarn-site.xml"));

conf.addResource(nueva ruta(rootPath+) "hilo -site.xml"));