mapreduce 快速入门

简介: mapreduce 案例【2月更文挑战第14天】

MapReduce是一个编程模型,用于处理大规模数据集。它可以将工作分布到多个计算机上,以并行方式处理数据,并生成最终的结果。MapReduce的主要思想是将问题分解为两个阶段:Map阶段和Reduce阶段。

aspectjtools-1.6.5.jar

image.png

image.png

下面是一个简单的MapReduce案例,用于计算一个文本文件中每个单词的出现次数:

问题描述:给定一个文本文件,其中包含多个句子。我们的任务是找出每个单词在文件中出现的次数。

Map阶段:

输入:文本文件中的每一行(假设单词之间由空格分隔)。
处理:对于每一行,将其拆分成单词,并为每个单词生成一个键值对。键是单词本身,值通常是1(表示该单词出现一次)。
输出:键-值对(单词,1)。
Reduce阶段:

输入:所有具有相同键(即相同单词)的键值对。
处理:对于每个键,将其对应的所有值相加,得到该单词在文件中出现的总次数。
输出:键-值对(单词,该单词在文件中出现的次数)。
案例分析:
Map类的实现:

import java.io.IOException;  
import org.apache.hadoop.io.IntWritable;  
import org.apache.hadoop.io.LongWritable;  
import org.apache.hadoop.io.Text;  
import org.apache.hadoop.mapreduce.Mapper;  

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
   
     
    private final static IntWritable one = new IntWritable(1);  
    private Text word = new Text();  

    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
   
     
        String line = value.toString();  
        String[] words = line.split(" ");  
        for (String str : words) {
   
     
            word.set(str);  
            context.write(word, one);  
        }  
    }  
}

Reduce类的实现:

import java.io.IOException;  
import org.apache.hadoop.io.IntWritable;  
import org.apache.hadoop.io.Text;  
import org.apache.hadoop.mapreduce.Reducer;  

public class WordCountReducer 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);  
    }  
}

sh
hdfs dfs -rm -r /output

假设我们有一个文本文件example.txt,内容如下:

Hello world
Hello Hadoop
Hadoop is fun
Map阶段将处理这个文件,并生成如下的键值对:

makefile
Hello, 1
world, 1
Hello, 1
Hadoop, 1
Hadoop, 1
is, 1
fun, 1
Reduce阶段将接收这些键值对,并合并具有相同键的值。因此,最终的输出将是:

makefile
Hello, 2
world, 1
Hadoop, 2
is, 1
fun, 1
这表明“Hello”在文件中出现了2次,“world”出现了1次,依此类推。

目录
相关文章
|
存储 分布式计算 Hadoop
Hadoop快速入门——第三章、MapReduce案例(字符统计)(2)
Hadoop快速入门——第三章、MapReduce案例(字符统计)
129 0
Hadoop快速入门——第三章、MapReduce案例(字符统计)(2)
|
分布式计算 Java Hadoop
Hadoop快速入门——第三章、MapReduce案例(字符统计)(1)
Hadoop快速入门——第三章、MapReduce案例(字符统计)
150 0
Hadoop快速入门——第三章、MapReduce案例(字符统计)(1)
|
存储 分布式计算 网络协议
阿里云 E-MapReduce ClickHouse 操作指南 02期 — 快速入门
阿里云 E-MapReduce(简称EMR)是运行在阿里云平台上的一种大数据处理的系统解决方案。ClickHouse 作为开源的列式存储数据库,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。而阿里云 EMR ClickHouse 则提供了开源 OLAP 分析引擎 ClickHouse 的云上托管服务。
阿里云 E-MapReduce ClickHouse 操作指南 02期 — 快速入门
|
SQL 分布式计算 Hadoop
HDFS+MapReduce+Hive+HBase十分钟快速入门
1.     前言 本文的目的是让一个从未接触Hadoop的人,在很短的时间内快速上手,掌握编译、安装和简单的使用。 2.     Hadoop家族 截止2009-8-19日,整个Hadoop家族由以下几个子项目组成: 成员名 用途 Hadoop Common Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。
1378 0
|
5月前
|
分布式计算 Hadoop
Hadoop系列 mapreduce 原理分析
Hadoop系列 mapreduce 原理分析
71 1
|
14天前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
61 3
|
4月前
|
分布式计算 Hadoop Java
Hadoop MapReduce编程
该教程指导编写Hadoop MapReduce程序处理天气数据。任务包括计算每个城市ID的最高、最低气温、气温出现次数和平均气温。在读取数据时需忽略表头,且数据应为整数。教程中提供了环境变量设置、Java编译、jar包创建及MapReduce执行的步骤说明,但假设读者已具备基础操作技能。此外,还提到一个扩展练习,通过分区功能将具有相同尾数的数字分组到不同文件。
57 1
|
4月前
|
数据采集 SQL 分布式计算
|
5月前
|
分布式计算 Hadoop Java
Hadoop MapReduce 调优参数
对于 Hadoop v3.1.3,针对三台4核4G服务器的MapReduce调优参数包括:`mapreduce.reduce.shuffle.parallelcopies`设为10以加速Shuffle,`mapreduce.reduce.shuffle.input.buffer.percent`和`mapreduce.reduce.shuffle.merge.percent`分别设为0.8以减少磁盘IO。