zoukankan      html  css  js  c++  java
  • Spark监控官方文档学习笔记

    任务的监控和使用

    有几种方式监控spark应用:Web UI,指标和外部方法

    Web接口

    每个SparkContext都会启动一个web UI,默认是4040端口,用来展示一些信息:

    1. 一系列调度的stage和task
    2. RDD大小和内存的使用概况
    3. 环境变量信息
    4. excutors的相关信息

    可以通过http://<driver-node>:4040访问,如果有多个sparkcontext运行在同一个节点,那么端口会依次为4040、4041、4042。

    注意这些信息只有在应用执行期间才能看到。如果想要执行完毕查看,那么可以在应用开始前设置spark.eventLog.enabledtrue,这样spark的日志信息会被持久化。

    在应用执行结束后查看web UI

    当应用执行完毕,可以在Spark History Server上查看日志。可以通过下面的命令启动history server:

    ./start-history-server.sh
    

    这样默认访问http://<server-url>:18080即可。

    如果使用文件系统的provider class(比如spark.history.provider),需要配置spark.history.fs.logDirectory选项。

    spark的jobs本身需要配置日志,并且输出到相同的共享、可写目录。比如,下面就把日志输出到hdfs://namenode/shared/spark-logs,client需要增加配置:

    spark.eventLog.enabled true
    spark.eventLog.dir hdfs://namenode/shared/spark-logs
    

    环境变量

    变量 说明
    SPARK_DAEMON_MEMORY history server分配的内存
    SPARK_DAEMON_JAVA_OPTS JVM选项
    SPARK_PUBLIC_DNS 对外的地址,如果没有设置应该是用回环地址,这块没怎么看明白
    SPARK_HISTORY_OPTS history server的配置

    配置

    变量名 默认值 说明
    spark.history.provider org.apache.spark.deploy.history.FsHistoryProvider history背后的实现类,目前spark就提供这一种,是基于文件系统的
    spark.history.fs.logDirectory file:/tmp/spark-events 支持file://或者hdfs://
    spark.history.fs.update.interval 10s 这个是服务器刷新的时间,只有服务器这边刷新了,webUI那边才有反应
    spark.history.retainedApplications 50 缓存的应用个数,如果超过限制,会从磁盘加载
    spark.history.ui.maxApplications Int.MaxValue 概况首页可以显示的应用数量
    spark.history.ui.piort 18080 端口号
    spark.history.kerberos.enabled false 是否使用kerberos登陆
    spark.history.kerberos.principal kerberos不了解
    spark.history.kerberos.keytab kerberos不了解
    spark.history.ui.acls.enable false acl校验
    spark.history.ui.admin.acls empty 可以查看history server的用户,*代表所有用户
    spark.history.fs.cleaner.enabled false 是否周期性的清除日志
    spark.history.fs.cleaner.interval 1d 多长时间检查一次,应用日志是否清除
    spark.history.fs.cleaner.maxAge 7d 超过这个时间的日志会被清除掉
    spark.history.fs.numReplayThreads 25% of available cores history server可以用的处理日志的线程数

    注意在概况首页,所有的列都可以点击用来排序。

    1. history server可以同时展示完成或者未完成的spark任务。如果应用在失败后有多次尝试,失败的记录也会展示出来。
    2. 未完成的应用需要等待服务器内部刷新。刷新的时间可以通过spark.history.fs.update.interval。如果集群很大,那么刷新时间应该长一点,如果想看实时的数据,可以通过web UI查看
    3. application如果中途直接退出,那么会被标注为未完成。
    4. 想要标记spark为完成状态,需要sc.stop()方法执行

    Rest API

    另外可以通过UI查看指标。这样可以让开发者很容易的创建一些可视化的工具。这些命令同时也只支持正在运行的应用。对于history server,访问的地址是http://<server-url>:18080/api/v1,对于正在运行的任务,可以访问http://localhost:4040/api/v1

    在这些api中,应用的标识为ID[app-id]。当通过YARN启动时,每个应用可能会有多次尝试,只有在cluster模式下才有 应用尝试的id,client模式是没有的。如果是集群模式,那么app-id其实是[base-app-id]/[attempt-id],其中base-app-id是yarn的appid。

    ?status=[active|complete|pending|failed] 可以列出对应的状态

    url 说明
    /applications 列出所有的应用。?status=[complete|running]选择对应的状态展示?minDate=[date]显示最小日期的应用,?maxDate=[date]``minEndDate=[date]``?maxEndDate=[date]``?limit=[limit]
    /applications/[app-id]/jobs 展示对应的jobs
    /applications/[app-id]/jobs/[job-id] job信息
    /applications/[app-id]/stages stages信息
    /applications/[app-id]/executors excutors信息
    /applications/[app-id]/streaming/statistics streaming信息

    其他工具

    其他相关的性能调优的工具:

    1. 集群监控,可以使用Ganglia
    2. 操作系统监控,可以用dstat, iostat, iotop
    3. JVM可以用jstack, jstat, jconsole
  • 相关阅读:
    Codeforces Round #358 (Div. 2)
    Codeforces Round #357 (Div. 2)
    Codeforces Round #356 (Div. 2)
    第11章例题(紫书)
    第10章例题(紫书)
    Codeforces Round #354 (Div. 2)
    2016百度之星
    BestCoder 1st Anniversary
    BestCoder Round #41
    BestCoder Round #40
  • 原文地址:https://www.cnblogs.com/xing901022/p/8116334.html
Copyright © 2011-2022 走看看