一个专注于大数据技术架构与应用分享的技术博客

MapReduce是Hadoop分布式计算的核心组件,它能够把数据分解成小块,并分发到集群中的多台计算机上进行并行处理,最终将结果合并为一个有序的输出结果。在这里,我们将演示如何编写一个简单的MapReduce程序并部署在Hadoop2.2.0上运行。

首先,我们将编写一个简单的WordCount程序,该程序能够从指定的文本文件中输入数据,并统计出其中每个单词出现的次数。

  1. 编写Map函数

在WordCount程序中,Map函数的作用是将输入数据分解成每个单词,并为每个单词设置一个计数器,初始值为1。下面是一个示例Map函数。

public static class Map 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();
        StringTokenizer tokenizer = new StringTokenizer(line);
        while (tokenizer.hasMoreTokens()) {
            word.set(tokenizer.nextToken());
            context.write(word, one);
        }
    }
}  
  1. 编写Reduce函数

Reduce函数的作用是对Map函数输出的每个单词的计数器进行累加,并输出最终的计数结果。下面是一个示例Reduce函数。

public static class Reduce 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));
    }
}
  1. 配置运行Hadoop的环境变量

在Linux环境下,在/etc/profile文件中添加如下环境变量。

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:${HADOOP_HOME}/bin
  1. 创建HDFS文件夹

在Hadoop执行前,需要在HDFS上进行目录创建。通过下列命令创建/wordcount/input目录。

$ hadoop fs -mkdir /wordcount
$ hadoop fs -mkdir /wordcount/input
  1. 将输入文件上传到HDFS上

将输入文件放置在本地文件系统上,并通过hadoop fs -put将文件复制到HDFS上。输入文件在HDFS中的路径为/wordcount/input。

$ hadoop fs -put /path/to/input/file/in/local /wordcount/input/
  1. 编写运行WordCount程序的脚本
#!/bin/bash
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar
input=/wordcount/input
output=/wordcount/output
hdfs dfs -rm -r -f $output
hadoop jar wordcount.jar WordCount $input $output
hadoop fs -cat $output/*
  1. 执行脚本

执行前请确认wordcount.jar位于指定位置,执行脚本。

$ sh run_wordcount.sh

以上就是简单的MapReduce程序如何在Hadoop2.2.0上运行的演示步骤。希望能对大家有所帮助。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《》
文章链接:https://macsishu.com/write-simple-program-run-on-hadoop220-and-deployment
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。