首页技术文章正文

MapReduce分布式计算框架:MapReduce运行模式是什么?

更新时间:2022-07-27 来源:黑马程序员 浏览量:

  MapReduce程序的运行模式主要有如下两种。

  (1)本地运行模式:在当前的开发环境模拟MapReduce执行环境,处理的数据及输出结果在本地操作系统。

  (2)集群运行模式:把MapReduce程序打成一个jar包,提交至YARN集群上去运行任务。由于YARN集群负责资源管理和任务调度,程序会被框架分发到集群中的节点上并发地执行,因此处理的数据和输出结果都在HDFS中。

  集群运行模式只需要将MapReduce程序打成jar包上传至集群即可,比较简单,这里不再赘述。下面以词频统计为例,讲解如何将MapReduce程序设置为在本地运行模式。

  在MapReduce程序中,除了要实现Mapper(代码见4.3.2节的WordCountMapper.java文件)和Reduce(代码见4.3.3节的WordCountReducer.java文件)外,还需要一个Driver类提交程序和具体代码,如文件4-6所示。

  文件4-6 WordCountDriver.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 WordCountDriver {
    public static void main(String[] args) throws Exception {
        //通过Job来封装本次MR的相关信息
        Configuration conf=new Configuration ();
        //配置MR运行模式,使用local表示本地模式,可以省略
        conf.set("mapreduce.framework.name", "local");
        Job wcjob=Job.getInstance(conf);
        //指定MR Job jar包运行主类
        wcjob.setJarByClass(WordCountDriver.class);
        //指定本次MR所有的Mapper Reducer类
        wcjob.setMapperClass(WordCountMapper.class);
        wcjob.setReducerClass(WordCountReducer.class);
        //设置业务逻辑Mapper类的输出key和value的数据类型
        wcjob.setMapOutputKeyClass(Text.class);
        wcjob.setMapOutputValueClass(IntWritable.class);
        //设置业务逻辑Reducer类的输出key和value的数据类型
        wcjob.setOutputKeyClass(Text.class);
        wcjob.setOutputValueClass(IntWritable.class);
        //使用本地模式指定要处理的数据所在的位置
        FileOutputFormat.setInputPaths(wcjob, "D:/mr/input");
        //使用本地模式指定处理完成之后的结果所保存的位置
        FileOutputFormat.setOutputPath(wcjob,new Path("D:/mr/output"));
        //提交程序并且监控打印程序执行情况
        boolean res=wcjob.waitForCompletion(true);
        System.exit(res ?0:1);
    }
}

  在文件4-6中,往Configuration对象中添加“mapreduce.framework.name=local”参数,表示程序为本地运行模式,实际上在hadoop-mapreduce-client-core-2.7.4.jar包下面的mapred-default.xml配置文件中,默认指定使用本地运行模式,因此mapreduce.framework.name=local配置也可以省略;同时,还需要指定本地操作系统源文件目录路径和结果输出的路径。当程序执行完毕后,就可以在本地系统的指定输出文件目录查看执行结果了。

分享到:
在线咨询 我要报名
和我们在线交谈!