Uso de MapReduce con Apache Hadoop en HDInsightUse MapReduce in Apache Hadoop on HDInsight

Obtenga información sobre cómo ejecutar trabajos de MapReduce en clústeres de HDInsight.Learn how to run MapReduce jobs on HDInsight clusters.

Datos de ejemploExample data

HDInsight proporciona diversos conjuntos de datos de ejemplo que se almacenan en los directorios /example/data y /HdiSamples.HDInsight provides various example data sets, which are stored in the /example/data and /HdiSamples directory. Estos directorios están en el almacenamiento predeterminado de su clúster.These directories are in the default storage for your cluster. En este documento, se utiliza el archivo /example/data/gutenberg/davinci.txt.In this document, we use the /example/data/gutenberg/davinci.txt file. Este archivo contiene los cuadernos de Leonardo Da Vinci.This file contains the notebooks of Leonardo da Vinci.

MapReduce de ejemploExample MapReduce

En el clúster de HDInsight se incluye un MapReduce de ejemplo de aplicación de recuento de palabras.An example MapReduce word count application is included with your HDInsight cluster. En este ejemplo se encuentra en /example/jars/hadoop-mapreduce-examples.jar en el almacenamiento predeterminado del clúster.This example is located at /example/jars/hadoop-mapreduce-examples.jar on the default storage for your cluster.

El código Java siguiente es el origen de la aplicación de MapReduce contenida en el archivo hadoop-mapreduce-examples.jar:The following Java code is the source of the MapReduce application contained in the hadoop-mapreduce-examples.jar file:

package org.apache.hadoop.examples;

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;

public class WordCount {

    public static class TokenizerMapper
        extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
        StringTokenizer itr = new StringTokenizer(value.toString());
        while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
        }
    }
    }

    public static class IntSumReducer
        extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values,
                        Context context
                        ) throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable val : values) {
        sum += val.get();
        }
        result.set(sum);
        context.write(key, result);
    }
    }

    public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
    if (otherArgs.length != 2) {
        System.err.println("Usage: wordcount <in> <out>");
        System.exit(2);
    }
    Job job = new Job(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

Para obtener instrucciones sobre cómo escribir sus propias aplicaciones de MapReduce, consulte Desarrollo de aplicaciones MapReduce de Java para HDInsight.For instructions to write your own MapReduce applications, see Develop Java MapReduce applications for HDInsight.

Ejecución de MapReduceRun the MapReduce

HDInsight puede ejecutar trabajos de HiveQL mediante varios métodos.HDInsight can run HiveQL jobs by using various methods. Use la tabla siguiente para decidir cuál es el método adecuado para usted luego siga el vínculo para ver un tutorial.Use the following table to decide which method is right for you, then follow the link for a walkthrough.

Use esto...Use this... ...para hacer esto...to do this ...desde este sistema operativo de cliente...from this client operating system
SSHSSH Uso del comando Hadoop mediante SSHUse the Hadoop command through SSH Linux, Unix, Mac OS X o WindowsLinux, Unix, Mac OS X, or Windows
CurlCurl Enviar el trabajo de forma remota mediante RESTSubmit the job remotely by using REST Linux, Unix, Mac OS X o WindowsLinux, Unix, Mac OS X, or Windows
Windows PowerShellWindows PowerShell Enviar el trabajo de forma remota mediante Windows PowerShellSubmit the job remotely by using Windows PowerShell WindowsWindows

Pasos siguientesNext steps

Para conocer más acerca del trabajo con datos en HDInsight, consulte los siguientes documentos:To learn more about working with data in HDInsight, see the following documents: