HDInsight üzerinde Apache Hadoop ile MapReduce'u kullanma

HDInsight kümelerinde MapReduce işlerini çalıştırmayı öğrenin.

Örnek veriler

HDInsight, ve /HdiSamples dizininde /example/data depolanan çeşitli örnek veri kümeleri sağlar. Bu dizinler kümeniz için varsayılan depolama alanındadır. Bu belgede, dosyayı kullanacağız /example/data/gutenberg/davinci.txt . Bu dosya, not defterlerini Leonardo da Vinciiçerir.

Örnek MapReduce

ÖRNEK bir MapReduce sözcük sayısı uygulaması HDInsight kümenize eklenir. Bu örnek, kümeniz için varsayılan depolamada bulunur /example/jars/hadoop-mapreduce-examples.jar .

Aşağıdaki Java kodu, dosyasında bulunan MapReduce uygulamasının hadoop-mapreduce-examples.jar kaynağıdır:

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);
    }
}

Kendi MapReduce uygulamalarınızı yazma yönergeleri için bkz . HDInsight için Java MapReduce uygulamaları geliştirme.

MapReduce'u çalıştırma

HDInsight çeşitli yöntemler kullanarak HiveQL işlerini çalıştırabilir. Hangi yöntemin sizin için uygun olduğuna karar vermek için aşağıdaki tabloyu kullanın, ardından bir izlenecek yol için bağlantıyı izleyin.

Bunu kullan... ... bunu yapmak için ... bu istemci işletim sisteminden
SSH SSH aracılığıyla Hadoop komutunu kullanma Linux, Unix veya MacOS XWindows
Curl REST kullanarak işi uzaktan gönderme Linux, Unix veya MacOS XWindows
Windows PowerShell Windows PowerShell kullanarak işi uzaktan gönderme Windows

Sonraki adımlar

HDInsight'ta verilerle çalışma hakkında daha fazla bilgi edinmek için aşağıdaki belgelere bakın: