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 dosyasını kullanacağız /example/data/gutenberg/davinci.txt
. Bu dosya, Leonardo da Vinci'nin not defterlerini içerir.
Örnek MapReduce
HDInsight kümenize örnek bir MapReduce sözcük sayısı uygulaması eklenmiştir. Bu örnek, kümeniz için varsayılan depolamada bulunur /example/jars/hadoop-mapreduce-examples.jar
.
Aşağıdaki Java kodu, dosyada 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öntemleri kullanarak HiveQL işlerini çalıştırabilir. Hangi yöntemin sizin için doğru olduğuna karar vermek için aşağıdaki tabloyu kullanın, ardından 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, Mac OS X veya Windows |
Curl | REST kullanarak işi uzaktan gönderme | Linux, Unix, Mac OS X veya Windows |
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: