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

问题场景

我在学习尚硅谷的Hadoop课程的群起集群(p31)这一节时,在配置好core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml这四个文件后,启动集群并运行wordcount样例程序

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

结果运行报错
Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
ERROR:Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster_第1张图片

解决方案

方案1
参考:https://blog.csdn.net/qq_41684957/article/details/81710190
参照这个方案添加类的路径确实可以解决
方案2
但是我后来想了一下,我前面在配置yarn-site.xml已经配置了环境变量,而且老师的视频中是可以成功运行的,为什么我这里还要额外再配置类的路径才可以呢,大概率是复制配置信息的时候出了问题,仔细观察yarn-site.xml后果然发现环境变量中间多了两个换行符,导致环境变量无法正常读取,于是就出现了前面找不到类的错误。
在这里插入图片描述
去掉这两个换行符后保存退出,再将yarn-site.xml分发同步到所有机器,然后重启集群,再运行wordcount就可以成功运行了。

由此得出一个教训:如果需要在配置文件中粘贴比较长的内容,最好先将命令行窗口开全屏,这样就可以轻易发现复制的内容中间是否有暗藏的换行符或空格,特别是那些内容连续超过一行的

你可能感兴趣的:(踩坑日记,hadoop)