当前位置:实例文章 » 其他实例» [文章]黑马程序员-大数据入门到实战-MapReduce & YARN入门

黑马程序员-大数据入门到实战-MapReduce & YARN入门

发布人:shili8 发布时间:2025-01-06 04:57 阅读次数:0

**黑马程序员-大数据入门到实战-MapReduce & YARN入门**

作为一名黑马程序员,学习大数据技术是非常有挑战性的,但也非常有趣的。MapReduce是一种经典的分布式计算框架,广泛应用于大数据处理领域。在本文中,我们将从零开始讲解MapReduce和YARN(Yet Another Resource Negotiator)的基本概念、原理和实践。

**什么是MapReduce**

MapReduce是一种分布式计算模型,由Google在2004年提出。它的主要目的是解决海量数据处理的问题,通过分治法将大数据分成小块,并分别处理这些小块,然后合并结果得到最终答案。

MapReduce的基本流程如下:

1. **Map**: 将输入数据分成小块,每个小块称为一个键值对(key-value pair)。然后,对每个小块进行映射(map),生成新的键值对。
2. **Shuffle**: 将映射结果中的键值对重新组织,保证同一键的所有值都在一起。
3. **Reduce**: 对每个键的值进行聚合(reduce),得到最终结果。

**什么是YARN**

YARN是一种资源管理器和调度器,它可以为MapReduce应用程序提供资源分配和调度服务。YARN的主要目的是提高MapReduce的效率和可扩展性。

YARN的基本流程如下:

1. **ResourceManager**: 负责资源的分配和调度。
2. **ApplicationMaster**: 负责应用程序的启动和管理。
3. **Container**: 是YARN中的一种资源单元,用于运行MapReduce任务。

**MapReduce实践**

下面,我们将使用Hadoop MapReduce来演示一个简单的WordCount例子。

### WordCount例子

java// WordCount.javaimport 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;

public class WordCount {
 public static void main(String[] args) throws Exception {
 Configuration conf = new Configuration();
 Job job = Job.getInstance(conf, "wordcount");

 // Mapper job.setMapperClass(WordCountMapper.class);
 job.setMapOutputKeyClass(Text.class);
 job.setMapOutputValueClass(IntWritable.class);

 // Combiner job.setCombinerClass(WordCountReducer.class);

 // Reducer job.setReducerClass(WordCountReducer.class);
 job.setOutputKeyClass(Text.class);
 job.setOutputValueClass(IntWritable.class);

 FileInputFormat.addInputPath(job, new Path("input"));
 FileOutputFormat.setOutputPath(job, new Path("output"));

 System.exit(job.waitForCompletion(true) ?0 :1);
 }

 public static class WordCountMapper extends Mapper {
 private final static IntWritable one = new IntWritable(1);

 @Override protected void map(Object key, Text value, Context context)
 throws IOException, InterruptedException {
 String[] words = value.toString().split("s+");
 for (String word : words) {
 context.write(new Text(word), one);
 }
 }
 }

 public static class WordCountReducer extends Reducer {
 @Override protected void reduce(Text key, Iterable values,
 Context context)
 throws IOException, InterruptedException {
 int sum =0;
 for (IntWritable val : values) {
 sum += val.get();
 }
 context.write(key, new IntWritable(sum));
 }
 }
}


在上面的例子中,我们定义了一个WordCount类,包含Mapper和Reducer两个类。Mapper负责将输入数据分成小块,并对每个小块进行映射。Reducer负责对每个键的值进行聚合。

### YARN实践下面,我们将使用YARN来运行上面的WordCount例子。

bash# 运行WordCount例子hadoop jar WordCount.jar input output


在上面的命令中,我们使用Hadoop提供的`jar`命令来运行WordCount例子。输入数据位于`input`目录,输出结果将保存在`output`目录。

### 总结MapReduce是一种经典的分布式计算框架,广泛应用于大数据处理领域。在本文中,我们从零开始讲解了MapReduce和YARN的基本概念、原理和实践。通过上面的例子,我们可以看到MapReduce如何将输入数据分成小块,并对每个小块进行映射和聚合。同时,我们也看到了YARN如何为MapReduce应用程序提供资源管理器和调度器服务。

希望本文能够帮助黑马程序员们更好地理解大数据技术,特别是MapReduce和YARN的基本概念和实践。

相关标签:mapreduceyarn大数据
其他信息

其他资源

Top