mapreduce job提交的几种运行方式

mapreduce job提交的几种运行方式

总共整理下来有三大类:

  • 集群上直接通过jar包来调用,输入和输出文件必须都存在hdfs集群上
  • linux环境下,在eclipse中集群或本地调用程序,以及输入和输出文件存于集群或本地
  • windows环境下,在eclipse中集群或本地调用程序,以及输入和输出文件存于集群或本地

1、在eclipse中开发好mr程序(windows或linux下都可以),然后打成jar包(wc.jar),上传到服务器
执行命令

hadoop jar wc.jar com.elon.bigdata.hadoop.MainClassRunner 

这种方式会将这个job提交到yarn集群上去运行,程序的输入和输出文件可以存在windows/linux本地或者hdfs集群上,根据程序中编写的Path路径来做选择。

2、在Linux的eclipse中直接启动Runner类的main方法,这种方式可以使job运行在本地,也可以运行在yarn集群

  • 究竟运行在本地还是在集群,取决于第一个配置参数

    conf.set("mapreduce.framework.name", "yarn");    //设置mapreduce的运行是在local(默认)还是yarn上
    conf.set("yarn.resourcemanager.hostname", "hadoop");    //若在yarn上运行,则指定yarn主机名
    
  • 如果确实需要在eclipse中提交到yarn执行,必须做好以下两个设置

    • 将mr工程打成jar包(wc.jar),放在工程主目录下

    • 在工程的main方法中,加入一个配置参数 conf.set(“mapreduce.job.jar”,”wc.jar”);

3、在windows的eclipse中运行本地模式,步骤为:

  • a、在windows中找一个地方放一份hadoop的安装包,并且将其bin目录配到环境变量中
  • b、根据windows平台的版本(32?64?win7?win8?),替换掉hadoop安装包中的本地库(bin,lib)
  • c、mr程序的工程中不要有参数mapreduce.framework.name的设置
  • d、四个自定义配置文件不要配置,默认是用本地hostname和LocalJobRunner运行

注意:当fs.defaultFS设置为Hadoop集群名时,程序输入参数的路径默认为集群上的路径,当fs.defaultFS为默认本地模式时,则文件输入输出路径为本地路径。

4、在windows的eclipse中运行main方法来提交job到集群执行,比较麻烦

  • a、类似于方式3中所描述的对本地库兼容性进行改造
  • b、修改YarnRunner这个类
0%