部署完Hadoop3.4.0 HA后跑wordcount程序报错,在日志文件里 http://rsnode:8042/logs/userlogs 里看到报错日志说不能加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
网上给的办法大多都是让执行 hadoop classpath 然后把那一长串配置到 mapred-site.xml。如图
自己测试过之后发现只要在 hadoop-env.sh 里 修改 export $HADOO_HOME 的环境变量即可, 在2.x的版本中这里只要做Java环境变量的二次配置,3.x的系统需要把Hadoop的环境变量也加上,这样配置就会简化很多
配置好 HADOOP_HOME的环境变量后,在 mapred-site.xml 中重新添加下面三个配置项即可
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>${HADOOP_HOME}</value>
</property>
<!-- 为 Map 添加环境变量 -->
<property>
<name>mapreduce.map.env</name>
<value>${HADOOP_HOME}</value>
</property>
<!-- 为 Reduce 添加环境变量 -->
<property>
<name>mapreduce.reduce.env</name>
<value>${HADOOP_HOME}</value>
</property>
如果还有报错的话在 yarn-site.xml 里加上这一项
<!-- 环境变量白名单 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>