非HA模式下的Apache Yarn在重启以后,8088端口默认是看不到之前运行过的历史任务的,如果想要看到历史任务,只需要在yarn-site.xml里面设置三个参数即可.
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<!--默认值为false,也就是说resourcemanager挂了相应的正在运行的任务在rm恢复后不能重新启动-->
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<!--此版本的rmstate信息存放主要有两种,一种是FileSystemRMStateStore,另一种是MemoryRMStateStore,还有一种目前较为主流的是zkstore-->
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore</value>
</property>
<property>
<name>yarn.resourcemanager.fs.state-store.uri</name>
<!--此处配置为hdfs存储状态信息,还可以配置为存放在本地路径,之所以存放在hdfs上是考虑都如果rm节点完全挂掉,还可以在其他节点上启动rm直接读取hdfs信息,如果放在本地文件系统上还需要进行状态信息的同步。-->
<value>file://${hadoop.tmp.dir}/yarn/system/rmstore</value>
</property>
第三个参数默认值 是${hadoop.tmp.dir}/yarn/system/rmstore,前面如果不加file://协议,yarn会默认为hdfs路径,因为我们在core-site.xml里面设置了
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
如果这么玩,第一次启动hadoop会报错,因为hdfs启动以后会有个30s的安全模式,启动完hdfs以后,直接启动yarn,yarn会去hdfs上创建目录,会报一个安全模式的错误,所以我在此处将信息存到了本地路径了.