spark开启EventLog

History Server及其配置

以默认配置的方式启动spark history server:
   
   
   
   
  1. cd $SPARK_HOME/sbin
  2. start-history-server.sh
启动完成之后可以通过WEBUI访问,默认端口是18080:http://vmaxspark:18080

以spark.history开头的需要配置在spark-env.sh中的SPARK_HISTORY_OPTS
属性名 默认值 含义
spark.history.fs.logDirectory
file:/tmp/spark-events
history server读取event log的目录
spark.history.ui.port
18080
history server的Web端口
spark.history.retainedApplications
50 在内存中保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,当再次访问已被删除的应用信息时需要重新构建页面。
spark.history.updateInterval
10
以秒为单位,更新日志相关信息的时间间隔

以spark.eventLog开头的配置在spark-defaults.conf
属性名 默认值 含义
spark.eventLog.enabled
false 
是否记录Spark事件,用于应用程序在完成后重构webUI
spark.eventLog.dir
file:///tmp/spark-events
保存日志相关信息的路径,可以是hdfs://开头的HDFS路径,也可以是file://开头的本地路径,都需要提前创建
spark.eventLog.compress 
false 
是否压缩记录Spark事件,前提spark.eventLog.enabled为true,默认使用的是snappy

实例
如果不是使用spark-submit提交程序,而是一个独立的Driver来提交程序,需要在程序里设置eventLog.enabled,如下最后两行:
    
    
    
    
  1. val conf = new SparkConf()
  2. .setAppName("HiveContextDemo")
  3. .setMaster("spark://vmaxspark1:7077")
  4. .setJars(List("./target/scala-2.10/sparkdemo_2.10-1.0.jar"))
  5. .set("spark.executor.memory", "20g")
  6. .set("spark.cores.max", "12")
  7. .set("spark.eventLog.enabled", "true")
  8. .set("spark.eventLog.dir","hdfs://vmaxspark1:9000/history-log")

遇到的问题
1.  报错,没有权限访问hdfs://vmaxspark1:9000/history-log
    运行Driver的用户必须有执行eventLog.dir的权限。可以使用如下命令开放该目录所有权限
    
    
    
    
  1. hdfs dfs -chmod 777 /history-log
2. 报错,LiveListenerBus: Listener EventLoggingListener threw an exception,而且看Log时总是提示任务还在运行
    当系统退出而没调用sc.stop(),Hadoop FileSystem的shutdown hook会被调用,它会关闭fs,但它不会flush buffer里的内容,所以会导致log文件不完整。在我的测试中,调用sc.stop()可解决这个问题。




来自为知笔记(Wiz)


你可能感兴趣的:(spark开启EventLog)