对于MapReduce的HistoryServer只能记录MR的运行log,因此对于Spark需要单独部署自己的HistoryServer。
1.确认spark已经完成安装,且环境变量已如下设置
[hadoop@hadoop02 conf]$ echo $SPARK_HOME
/home/hadoop/apps/spark2.2
修改/home/hadoop/apps/spark2.2/conf下的spark-defaults.conf文件如下:
由于本环境hadoop集群为HA,所以下面中的hadoopha为HA的名字,也可以用hadoop01:9000的方式指定namenode节点。
log的目录必须先创建好。
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoopha/spark/directory
spark.history.fs.logDirectory hdfs://hadoopha/spark/historyLog
2 日志服务器的启动脚本在$SPARK_HOME/sbin下,start-history-server.sh
这里我们关心的是日志服务器读取的配置信息从哪获取?通过分析源码,发现主要从spark-config.sh和load-spark-env.sh中获取,但最终是来自spark-defaults.conf和spark-env.sh。
if [ -z "${SPARK_HOME}" ]; then
export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi
#$SPARK_HOME字符长度不为0,因此if语句不执行
. "${SPARK_HOME}/sbin/spark-config.sh"
. "${SPARK_HOME}/bin/load-spark-env.sh"
exec "${SPARK_HOME}/sbin"/spark-daemon.sh start org.apache.spark.deploy.history.HistoryServer 1 "$@"
3 由于spark-defaults.conf中配置的hadoopha,而不是直接指定namenode节点,所以spark-env.sh必须包含
HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-2.7.4/etc/hadoop ,从而可以读取hadoop的core-site.xml,找出hadoopha对应的所有节点。
4 启动后的界面如下
表示启动成功,进程名字为HistoryServer