环境相关:
OS:CentOS release 6.9
IP:192.168.77.10
MEM:10G(推荐4G以上)
DISK:50G
1. 相关说明
我们可以部署spark history server将我们运行的spark任务日志保存下来,备查备用。
spark history server是一个守护进程服务,有相应的WebUI,使用方便。
本实验需要spark环境,依据《spark-2.2.0-bin-2.6.1-cdh5.7.1 编译部署(一)》、
《spark-2.2.0-bin-2.6.1-cdh5.7.1 编译部署(二)》和《spark-2.2.0-bin-2.6.1-cdh5.7.1 编译部署(三)》部署。
2. 配置启动:
日志保存需要一个存储位置,可以是本地文件系统也可以是hdfs,本实验使用hdfs,
该存储位置需要提前创建:
hdfs dfs -mkdir hdfs:///spark_eventLog
配置 spark-default.conf 记录日志:
cd $SPARK_HOME/conf
vi spark-default.conf
# 打开history server开关
spark.eventLog.enabled true
# 配置日志写入路径
spark.eventLog.dir hdfs:///spark_eventLog
# 该目录要存在,需要history server启动前创建
spark.eventLog.compress true
# 压缩开关参数要打开,默认是关闭的
spark.io.compression.codec lz4
# 打开压缩之后,默认使用lz4压缩,保持默认即可
spark.io.compression.lz4.blockSize 32k
# 默认使用lz4压缩,并且配置压缩的块大小,默认32k太小
# 建议设置成320K以上
配置 spark-env.sh 展示日志:
cd $SPARK_HOME/conf
vi spark-env.sh
# 配置history server的读取日志位置
# 同时打开日志自动清理功能
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs:///spark_eventLog -Dspark.history.fs.cleaner.enabled=true"
# 该配置文件中的参数传参使用-D,如:
# XXX="-Dxxx=xxx -Dxxx=xxx"
# 一般-D代表的是自定义参数
启动history-server 服务:
cd $SPARK_HOME/sbin
./start-history-server.sh
# 默认监听端口18080,WebUI地址:http://IP:18080
3. 测试:
运行一个spark-shell 测试:
spark-shell --master yarn
sc.parallelize(1 to 1000).count
sc.stop
:quit
# 打开WebUI:http://192.168.77.10:18080
# Show completed applications
# Show incomplete applications
# spark-shell 是不是completed状态,取决于sc.stop有没有执行
4. 调优参数:
官方文档地址:http://spark.apache.org/docs/latest/monitoring.html
相关 spark-default.conf 调优参数:
# spark.history.fs.logDirectory file:/tmp/spark-events 默认读取日志的位置
# spark.history.fs.update.interval 10s 默认刷新时间是10秒
# spark.history.ui.port 18080 默认的WebUI端口
# spark.history.fs.cleaner.enabled false 是不是自动清理日志的开关
# spark.history.fs.cleaner.interval 1d 自动清理的周期
# spark.history.fs.cleaner.maxAge 7d 自动清理保存的最大历史
# spark.history.retainedApplications 50
# 缓存中保留数据的应用的数量
# 如果数量超限,最老的应用会被LRU
# 如果访问一个不在缓存中的应用,则会从磁盘加载该应用信息到缓存
5. REST API 部分:
通过 REST API 我们就可以定制我们特有的监控功能,
相关官方文档地址:http://spark.apache.org/docs/latest/monitoring.html
历史任务可以在 http://IP:18080/api/v1 找到
正在运行的任务 http://IP:4040/api/v1 找到
相应的参数,如 /applications
具体相应的URL,
例如:http://192.168.77.10:18080/api/v1/applications
http://192.168.77.10:18080/api/v1/applications?status=completed
返回相应的JSON信息
我们可以使用第三方的JSON格式化工具网页,如:
https://www.bejson.com/ 将返回信息贴入,进一步查看
6. Metrics 部分:
Spark包含一个可配置化的指标体系
允许spark性能指标以多样化的形式展示,如HTTP、JMX或CSV文件
通过配置 $SPARK_HOME/conf/metrics.properties 来控制,
具体参见官方文档:http://spark.apache.org/docs/latest/monitoring.html
[TOC]