默认情况下HistoryServer没有启动,需要使用sbin/mr-jobhistory-daemon.sh start historyserver 启动
并且启动前需要在mapred-site.xml加上配置:
<property>
<name>mapreduce.jobhistory.address</name>
<value>127.0.0.1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>127.0.0.1:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
<property>
<name>mapreduce.task.io.sort.mb</name>
<value>1024</value>
</property>
此时启动会发现已经自动创建HDFS目录
但是如果在本地执行JOB时还会发现Jobserver虽然能启动,但是不能在上面看到job信息,查看资料发现还有些配置项需要配置,每个配置项都要和官网上的配置文件版本比对,不同的版本名称不一样:
比如mapred-site.xml默认官网URL:http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
下面是增加的配置项:
mapred-default.xml:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
取值local、classic或yarn其中之一,如果不是yarn,则不会使用YARN集群来实现资源的分配 (默认为local),不配置loghistory不能查看体现log
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx2048m</value>
</property>
配置每个map或reduce使用的内存数量(默认为200m),不配置可能会报map的java heap size错误
<property>
<name>mapreduce.task.io.sort.mb</name>
<value>1024</value>
</property>
排序内存使用限制(默认为100)
yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置shuffle服务
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
启用日志聚集功能,默认为false,不打开则查看详细日志会报错
这样虽然可以在historyserver中看到job信息,但是在eclipse上执行job时,会报错,一种是output-collector-not-initialised,另一种是类找不到,但是如果将eclipse中的项目打成jar包,直接用hadoop jar还是可以运行的,所以感觉程序应该是没有问题,仍然是环境的问题,于是将eclipse打成的jar包导入进eclipse hadoop项目,这时再run on hadoop就没有错误了