4040端口只能看到正在运行App的情况,并不能看到App运行结束后的各项数据
Mesos或YARN模式下可以通过各自的Web UI看到JobHistory情况的,但是在Standalone模式下是有自己的JobHistory Web UI
以下内容主要是怎样开启Standalone模式下的JobHistory Web UI
测试环境
1 | 测试环境: |
概述
翻译:运行结束后监控 [Viewing After the Fact]
在Spark的 Standalone 模式下,有它自己的web UI监控界面,如果一个应用程序已经记录了它的生命周期,在程序运行结束后,Standalone模式下master主机的web UI将会自动重现App的信息UI。
如果Spark运行在Mesos或YARN上,并且App的日志记录存在,依然有可能通过Spark历史服务来重新修改已经完成应用的UI。你可以通过以下内容启动历史服务:
1 | ./sbin/start-history-server.sh |
当使用文件系统作为日志文件的存储时,必须提供 spark.history.fs.logDirectory 参数的配置(请看下面的 spark.history.provider 参数详情),并且应该包含子目录,每个子目录表示一个应用程序日志记录的位置。这将会创建一个默认web界面:1
http://<server-url>:18080
历史服务的配置参数如下:
环境变量 | 意义 |
---|---|
SPARK_DAEMON_MEMORY | 分配给历史服务器的内存(默认:1G) |
SPARK_DAEMON_JAVA_OPTS | 历史服务器JVM选项(默认:none) |
SPARK_PUBLIC_DNS | 设置历史服务器的公共地址,如果不设定,连接应用程序的历史记录会使用服务器内部地址,可能会导致连接失效(默认:none) |
SPARK_HISTORY_OPTS | 历史服务器的spark.history.*配置选项(默认:none) |
spark.history.* 如下:
参数名称 | 默认值 | 意义 |
---|---|---|
spark.history.provider | org.apache.spark.deploy.history.FsHistoryProvider | 历史应用接入的类名,目前只有一个Spark提供的实现类,它是通过存储在文件系统中的应用程序日志中寻找出来的 |
spark.history.fs.logDirectory | file:/tmp/spark-events | 用于存放提供给历史服务器加载的应用程序日志目录 |
spark.history.fs.update.interval | 10s | 呈现在历史服务器上的应用数据更新周期,每一个更新操作都会记录日志并做持久化操作 |
spark.history.retainedApplications | 50 | 保留在UI上应用数目,如果超过这个限制,旧的应用记录将被移除 |
spark.history.ui.port | 18080 | 历史服务器所绑定的UI端口 |
spark.history.kerberos.enabled | false | 用于表明历史服务器是否允许使用kerberos登录,当历史服务器需要访问一个安全Hadoop上的HDFS时,这是很有用的;如果设置为true,则用配置spark.history.kerberos.principal 和 spark.history.kerberos.keytab |
spark.history.kerberos.principal | (none) | Kerberos安全配置的名字 |
spark.history.kerberos.keytab | (none) | kerberos keytab的存放位置 |
spark.history.ui.acls.enable | false | 指定是否应该检查访问控制列表,以授权用户查看应用详情;如果启用,当应用运行后,检查将忽略应用本身设置的spark.ui.acls.enable参数;应用所有者有权查看他们自己的应用情况,当设置了spark.ui.view.acls参数的其他用户也有权查看这类应用;如果禁用,则不会进行检查 |
spark.history.fs.cleaner.enabled | false | 指定历史服务器是否应该定期从存储设备上清理日志信息 |
spark.history.fs.cleaner.interval | 1d | 设定job历史文件清理周期,只有超过spark.history.fs.cleaner.maxAge参数设定的文件才会被删除 |
spark.history.fs.cleaner.maxAge | 7d | Job历史文件超过这个设定时间,将会被删除 |
UI上的所有信息,都可以通过点击他们的标题头部进行分类,这样就可以方便的看出慢的tasks,数据不均衡等问题。
历史服务器上展现的只是已经完成的Spark Jobs,一个标志Spark Job完成的信号就是Spark Context的停止 (sc.stop())
在Python中可以使用:1
with SparkContext() as sc:
去操纵Spark Context的启动和销毁,并且能让运行完成的应用展示在历史工作的UI上
历史监控的配置
将历史Log保存到HDFS上
HDFS上创建 Spark History Log 目录
1 | hadoop fs -mkdir -p /test_log/spark_hislog |
修改spark-env.sh
1 | vim conf/spark-env.sh |
修改spark-defaults.conf
1 | cp spark-defaults.conf.template ./spark-defaults.conf |
启动start-history-server.sh
1 | ./sbin/start-history-server.sh |
访问Web UI
1 | http://<server-url>:18080 |
参考:Monitoring and Instrumentation 官方文档
转载请注明出处