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 Vinci
iç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 X Windows |
Curl | REST kullanarak işi uzaktan gönderme | Linux, Unix veya MacOS X 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: