以下两篇帖子给了我很大的帮助,改天正在好好整理一下所有的思路重新整理

第一篇:http://www.tuicool.com/articles/AjUZrq

第二篇:http://www.linuxidc.com/Linux/2014-04/99858.htm

这里我单独说一下设置mapreduce.application.classpath属性的问题,第二篇文章中说这个属性在yarn-site.xml和mapred-site.xml中应该修改为如下:

<property>
 <name>mapreduce.application.classpath</name>
 <value>
  $HADOOP_CONF_DIR,
  $HADOOP_COMMON_HOME/share/hadoop/common/*,
  $HADOOP_COMMON_HOME/share/hadoop/common/lib/*,
  $HADOOP_HDFS_HOME/share/hadoop/hdfs/*,
  $HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,
  $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*,
  $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*,
  $HADOOP_YARN_HOME/share/hadoop/yarn/*,
  $HADOOP_YARN_HOME/share/hadoop/yarn/lib/*
 </value>
</property>

但是我在hadoop的2.2的版本上做过尝试,即使上述的 $HADOOP_YARN_HOME这些之类的变量都设置过了,但是就连wordcount这种程序也还是依然不能运行,即使以hadoop jar这种方式也不行,钟其原因就是会有有一个这个问题,不管怎么样你都不能避免。就是下述的这个问题:

Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

目前我发现把mapreduce.application.classpath中的value的值都修改成绝对路径就可以了(哎!因为这么个简单的问题搞了整整一下午,真是郁闷的不得了),如 $HADOOP_YARN_HOME/share/hadoop/yarn/lib/*写成/opt/hadoop2.2.0/share/hadoop/yarn/lib/*(看网上的很多帖子都是写成这种带环境变量的,以为hadoop能替换环境变量,坑爹啊!!!居然没做替换环境变量的功能,无语~~~~),不知道其他兄弟有没好的解决方案,欢迎拍砖