Použití MapReduce v Apache Hadoop ve službě HDInsightUse MapReduce in Apache Hadoop on HDInsight

Naučte se spouštět úlohy MapReduce v clusterech HDInsight.Learn how to run MapReduce jobs on HDInsight clusters.

Ukázková dataExample data

HDInsight poskytuje různé příklady datových sad, které jsou uložené v /example/data adresáři a. /HdiSamplesHDInsight provides various example data sets, which are stored in the /example/data and /HdiSamples directory. Tyto adresáře jsou ve výchozím úložišti pro váš cluster.These directories are in the default storage for your cluster. V tomto dokumentu používáme /example/data/gutenberg/davinci.txt soubor.In this document, we use the /example/data/gutenberg/davinci.txt file. Tento soubor obsahuje poznámkové bloky Leonardo da Vinci.This file contains the notebooks of Leonardo da Vinci.

Příklad MapReduceExample MapReduce

Cluster HDInsight obsahuje příklad aplikace MapReduce počet slov.An example MapReduce word count application is included with your HDInsight cluster. Tento příklad se nachází /example/jars/hadoop-mapreduce-examples.jar ve výchozím úložišti pro váš cluster.This example is located at /example/jars/hadoop-mapreduce-examples.jar on the default storage for your cluster.

Následující kód Java je zdrojem aplikace MapReduce obsažené v hadoop-mapreduce-examples.jar souboru: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);
    }
}

Pokyny k psaní vlastních aplikací MapReduce naleznete v následujícím dokumentu:For instructions to write your own MapReduce applications, see the following document:

Spusťte MapReduce.Run the MapReduce

HDInsight může spouštět úlohy HiveQL pomocí různých metod.HDInsight can run HiveQL jobs by using various methods. Pomocí následující tabulky se rozhodněte, která metoda je pro vás nejvhodnější, a pak použijte odkaz na návod.Use the following table to decide which method is right for you, then follow the link for a walkthrough.

Použít...Use this... ...a tomu...to do this ...při to clusteru operačního systému...with this cluster operating system ...from to klientský operační systém...from this client operating system
SSHSSH Použití příkazu Hadoop přes SSHUse the Hadoop command through SSH LinuxLinux Linux, UNIX, Mac OS X nebo WindowsLinux, Unix, Mac OS X, or Windows
CurlCurl Vzdálenou úlohu odešlete pomocí REST .Submit the job remotely by using REST Linux nebo WindowsLinux or Windows Linux, UNIX, Mac OS X nebo WindowsLinux, Unix, Mac OS X, or Windows
Windows PowerShellWindows PowerShell Vzdálená úloha se odešle pomocí Windows PowerShellu .Submit the job remotely by using Windows PowerShell Linux nebo WindowsLinux or Windows WindowsWindows

Další krokyNext steps

Další informace o práci s daty v HDInsight najdete v následujících dokumentech:To learn more about working with data in HDInsight, see the following documents: