返回列表 发新帖

如何编译并成功运行MapReduce应用的输入路径(inputpath)?

[复制链接]

10

主题

24

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2024-8-4 08:40:15  | 显示全部楼层 | 阅读模式
MapReduce应用需要先编译,然后通过指定输入路径(inputpath)来运行。编译过程确保代码无错误,而指定输入路径让程序知道从哪里读取数据进行处理,是执行MapReduce作业的基本步骤。
MapReduce是一种编程模型,用于处理和生成大数据集,它由两个主要阶段组成:Map阶段和Reduce阶段,在Map阶段,输入数据被分割成多个独立的块,然后每个块被映射到一个键值对,在Reduce阶段,所有具有相同键的键值对被组合在一起,并使用一个reduce函数进行处理。

zbhjcvf55tigit5.jpg

zbhjcvf55tigit5.jpg


(图片来源网络,侵删)
以下是一个简单的MapReduce应用示例,用于统计文本中单词的出现次数:
1、编写Mapper类:

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 {
    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[] words = value.toString().split("\s+");
        for (String w : words) {
            word.set(w);
            context.write(word, one);
        }
    }
}
2、编写Reducer类:

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 {
    public void reduce(Text key, Iterable[I] values, Context context) throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable val : values) {
            sum += val.get();
        }
        context.write(key, new IntWritable(sum));
    }
}
3、编译并运行MapReduce应用:
确保已经安装了Hadoop和Java环境,将上述代码保存为WordCountMapper.java和WordCountReducer.java文件,使用以下命令编译这两个类:

$ javac classpathhadoop classpath d wordcount_classes WordCountMapper.java WordCountReducer.java
编译成功后,会生成一个名为wordcount_classes的目录,其中包含编译后的.class文件,创建一个名为wordcount.jar的JAR包,包含所有编译后的类:

$ jar cvf wordcount.jar C wordcount_classes/ .
使用以下命令运行MapReduce作业:

zbhjvg1d3hjea05.png

zbhjvg1d3hjea05.png


(图片来源网络,侵删)

$ hadoop jar wordcount.jar org.apache.hadoop.examples.WordCount input_path output_path
input_path是HDFS上存储输入数据的路径,output_path是要将结果写入的HDFS路径。

$ hadoop jar wordcount.jar org.apache.hadoop.examples.WordCount /user/hadoop/input /user/hadoop/output
运行完成后,可以在HDFS上查看output_path目录下的结果。


zbhjbienxe1bjtz.png

zbhjbienxe1bjtz.png


(图片来源网络,侵删)
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表