mapreduce程序运行模式(本地模式和集群模式)

----------本地模式

(1)mapreduce程序是被提交给LocalJobRunner在本地以单进程的形式运行

(2)而处理的数据及输出结果可以在本地文件系统,也可以在hdfs

(3)怎样实现本地运行?写一个程序,不要带集群的配置文件(本质是你的mr程序的conf中是否有mapreduce.framework.name=local以及yarn.resourcemanager.hostname参数)

(4)本地模式非常便于进行业务逻辑的debug,只要在eclipse中打断点即可

 

如果在windows下想运行本地模式来测试程序逻辑,需要在windows中配置环境变量:

HADOOP_HOME  =  d:/hadoop-2.6.1

%PATH% =  HADOOP_HOME\bin

并且要将d:/hadoop-2.6.1libbin目录替换成windows平台编译的版本

5)如果早程序运行中出现

运行启动hadoop出现错误 java.lang.UnsatisfiedLinkError

出现这个错误是windows没有hadoop.dll这个文件,下载hadoop.dll放到C:\Windows\System32中,就可以了。hadoop.dll文件在E:\hadoop-2.6.4\bin下


package cn.itcast.bigdata.mr.wcdemo;


import java.io.IOException;


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;






/**
 * 相当于一个yarn集群的客户端 
 * 需要在此封装我们的mr程序的相关运行参数,指定jar包
 * 最后提交给yarn
 * @author
 *
 */
public class WordCountDriver {


public static void main(String[] args) throws Exception {

Configuration conf = new Configuration();

           //运行代码是不需要指定运行方式为本地和文件位置,配置文件默认就是本地

/*conf.set("mapreduce.framework.name", "local");
conf.set("fs.defaultFS", "file:///");*/


        Job job = Job.getInstance(conf);
        
        //job.setJar("F:/wordcount.jar");
        //指定本程序jar包所在的本地路径
        job.setJarByClass(WordCountDriver.class);
        
      //指定本业务job要使用的mapper/Reducer业务类
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReduce.class);
        
      //指定mapper输出数据的kv类型
        job.setMapOutputKeyClass(Text.class);
       job.setMapOutputValueClass(IntWritable.class);
        
      //指定最终输出的数据的kv类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        
      //指定job的输入原始文件所在目录
        FileInputFormat.setInputPaths(job, new Path(args[0]));
      //指定job的输出结果所在目录
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        
      //将job中配置的相关参数,以及job所用的java类所在的jar包,提交给yarn去运行
        boolean  b = job.waitForCompletion(true);
        System.exit(b?0:1);
}
}


在eclipse中右键运行项目,选择Run as --- Run confugriions.在Main.class中

指定运行的程序cn.itcast.bigdata.mr.wcdemo.WordCountDriver

在Arguments中Program Arguments中指定需要 处理数据的文件位置

(例如处理F盘wc目录下input目录下的aa.txt,处理的结果输出到F盘目录下output3目录下)

如:F:\wc\input F:\wc\output3



你可能感兴趣的:(hadoop)