当前位置:首页 > Centos > 正文

CentOS MapReduce编程(从零开始掌握Hadoop MapReduce开发)

在当今的大数据时代,CentOS MapReduce编程已成为处理海量数据的重要技能。无论你是刚接触大数据的新手,还是希望深入理解分布式计算原理的开发者,本教程都将带你一步步在 CentOS 系统上搭建 Hadoop 环境,并编写你的第一个 MapReduce 程序。

CentOS MapReduce编程(从零开始掌握Hadoop MapReduce开发) MapReduce编程 MapReduce入门教程 Hadoop MapReduce示例 CentOS大数据处理 第1张

一、什么是 MapReduce?

MapReduce 是 Google 提出的一种分布式计算模型,用于大规模数据集的并行处理。它由两个核心阶段组成:

  • Map 阶段:将输入数据分割成键值对(key-value pairs),进行初步处理。
  • Reduce 阶段:对 Map 输出的结果进行汇总、聚合或排序。

Hadoop 是 MapReduce 的开源实现,而 CentOS 作为企业级 Linux 发行版,是部署 Hadoop 的理想平台。

二、环境准备(CentOS 7)

在开始之前,请确保你有一台安装了 CentOS 7 的虚拟机或物理机,并具备 root 权限。

1. 安装 Java

Hadoop 依赖 Java 运行环境:

sudo yum install -y java-1.8.0-openjdk-develjava -version  # 验证安装

2. 下载并配置 Hadoop

以 Hadoop 3.3.6 为例:

wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gztar -xzvf hadoop-3.3.6.tar.gz -C /opt/export HADOOP_HOME=/opt/hadoop-3.3.6export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,设置 JAVA_HOME:

export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))

三、编写第一个 MapReduce 程序(WordCount)

WordCount 是 MapReduce 的“Hello World”,用于统计文本中每个单词出现的次数。我们将使用 Java 编写。

1. 创建项目目录

mkdir -p ~/wordcount/src

2. 编写 Mapper 类

文件路径:~/wordcount/src/WordMapper.java

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 WordMapper 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("\\s+");        for (String w : words) {            word.set(w);            context.write(word, one);        }    }}

3. 编写 Reducer 类

文件路径:~/wordcount/src/WordReducer.java

import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;public class WordReducer extends Reducer<Text, IntWritable, Text, IntWritable> {    public void reduce(Text key, Iterable<IntWritable> values, Context context)            throws IOException, InterruptedException {        int sum = 0;        for (IntWritable val : values) {            sum += val.get();        }        context.write(key, new IntWritable(sum));    }}

4. 编写主驱动类

文件路径:~/wordcount/src/WordCount.java

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.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, "word count");        job.setJarByClass(WordCount.class);        job.setMapperClass(WordMapper.class);        job.setCombinerClass(WordReducer.class);        job.setReducerClass(WordReducer.class);        job.setOutputKeyClass(Text.class);        job.setOutputValueClass(IntWritable.class);        FileInputFormat.addInputPath(job, new Path(args[0]));        FileOutputFormat.setOutputPath(job, new Path(args[1]));        System.exit(job.waitForCompletion(true) ? 0 : 1);    }}

四、编译与运行

1. 编译 Java 代码

cd ~/wordcountjavac -cp $(hadoop classpath) -d . src/*.javajar -cvf wordcount.jar *.class

2. 准备测试数据

echo -e "hello world\nhello hadoop\nworld of big data" > input.txthdfs dfs -mkdir -p /inputhdfs dfs -put input.txt /input/

3. 提交 MapReduce 任务

hadoop jar wordcount.jar WordCount /input /output

4. 查看结果

hdfs dfs -cat /output/part-r-00000

你应该看到类似以下输出:

big	1data	1hadoop	1hello	2of	1world	2

五、总结

通过本教程,你已经成功在 CentOS 上完成了 MapReduce入门教程 的全部步骤,包括环境搭建、代码编写、编译和运行。这为你进一步学习 Hadoop MapReduce示例CentOS大数据处理 打下了坚实基础。

建议尝试修改 WordCount 程序,例如过滤停用词、统计行数等,以加深对 MapReduce 模型的理解。

© 2024 大数据学习指南 | 专注 CentOS MapReduce编程 实战教学