阅读次数
标签(空格分隔): 未分类
我们经常需要在一个app执行完成之后,去对这个app的执行情况进行分析,不管是分析它如何失败也好,或者是分析这个任务执行过程是否需要优化。那么这时候我们就需要用到historyserver.
首先log分为两种:1)标准输入输出的log 2)spark event log
对应yarn页面上的两个按钮:1)logs 2)history
###logs配置
对于yarn来说,logs这块需要配置:(所有nodemanager的机器上都需要修改该配置)
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>259200</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://hostA:8937/jobhistory/logs/</value>(yarn会在用户点击历史任务logs的时候跳转到这个url,这个url提供的jobhistory server是mapreduce的功能)
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs/yarn/</value>(yarn会负责任务结束后将地址转存到这个位置)
</property>
在hostA上修改mapred-site.xml配置:
对于mapred-site.xml来说需要配置:(./sbin/mr-jobhistory-daemon.sh start historyserver)
<property>
<name>mapreduce.jobhistory.address</name>
<value>hostA:8927</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hostB:8937</value>
</property>
(historyserver挂掉,检查相关的几个目录是不是满了)
在hostA上执行$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver启动historyserver。
这个步骤完成后在yarn页面上点击app的logs按钮就可以看到该app的日志,不管这个app执行完成与否。
###event log配置
对于history来说。yarn会负责跳转到app自身指定的history server当中去。(在hostB机器上$SPARK_HOME/sbin/start-history-server.sh启动historyserver)
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hostNamenode:8900/spark-event-2.0
spark.yarn.historyServer.address hostB:8651
spark.history.fs.logDirectory hdfs://hostNamenode:8900/spark-event-2.0
spark.history.retainedApplications 1000
spark.history.ui.port 8651
spark.history.fs.cleaner.enabled true
spark.history.fs.cleaner.interval 1d
spark.history.fs.cleaner.maxAge 3d
spark.executor.extraJavaOptions -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
这个完成后,就可以通过history按钮看到spark event log,不管该app执行完成与否。