在当今的大数据时代,CentOS MapReduce编程已成为处理海量数据的重要技能。无论你是刚接触大数据的新手,还是希望深入理解分布式计算原理的开发者,本教程都将带你一步步在 CentOS 系统上搭建 Hadoop 环境,并编写你的第一个 MapReduce 程序。
MapReduce 是 Google 提出的一种分布式计算模型,用于大规模数据集的并行处理。它由两个核心阶段组成:
Hadoop 是 MapReduce 的开源实现,而 CentOS 作为企业级 Linux 发行版,是部署 Hadoop 的理想平台。
在开始之前,请确保你有一台安装了 CentOS 7 的虚拟机或物理机,并具备 root 权限。
Hadoop 依赖 Java 运行环境:
sudo yum install -y java-1.8.0-openjdk-develjava -version # 验证安装
以 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))))
WordCount 是 MapReduce 的“Hello World”,用于统计文本中每个单词出现的次数。我们将使用 Java 编写。
mkdir -p ~/wordcount/src
文件路径:~/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); } }} 文件路径:~/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)); }} 文件路径:~/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); }} cd ~/wordcountjavac -cp $(hadoop classpath) -d . src/*.javajar -cvf wordcount.jar *.class
echo -e "hello world\nhello hadoop\nworld of big data" > input.txthdfs dfs -mkdir -p /inputhdfs dfs -put input.txt /input/
hadoop jar wordcount.jar WordCount /input /output
hdfs dfs -cat /output/part-r-00000
你应该看到类似以下输出:
big 1data 1hadoop 1hello 2of 1world 2
通过本教程,你已经成功在 CentOS 上完成了 MapReduce入门教程 的全部步骤,包括环境搭建、代码编写、编译和运行。这为你进一步学习 Hadoop MapReduce示例 和 CentOS大数据处理 打下了坚实基础。
建议尝试修改 WordCount 程序,例如过滤停用词、统计行数等,以加深对 MapReduce 模型的理解。
© 2024 大数据学习指南 | 专注 CentOS MapReduce编程 实战教学
本文由主机测评网于2025-12-12发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126435.html