Spark應用程序運行的日志存在哪里(轉)


原文鏈接:Spark應用程序運行的日志存在哪里

在很多情況下,我們需要查看driver和executors在運行Spark應用程序時候產生的日志,這些日志對於我們調試和查找問題是很重要的。

  Spark日志確切的存放路徑和部署模式相關:
  (1)、如果是Spark Standalone模式,我們可以直接在Master UI界面查看應用程序的日志,在默認情況下這些日志是存儲在worker節點的work目錄下,這個目錄可以通過SPARK_WORKER_DIR參數進行配置。

  (2)、如果是Mesos模式,我們同樣可以通過Mesos的Master UI界面上看到相關應用程序的日志,這些日志是存儲在Mesos slave的work目錄下。

  (3)、如果是YARN模式,最簡單地收集日志的方式是使用YARN的日志收集工具(yarn logs -applicationId ),這個工具可以收集你應用程序相關的運行日志,但是這個工具是有限制的:應用程序必須運行完,因為YARN必須首先聚合這些日志;而且你必須開啟日志聚合功能(yarn.log-aggregation-enable,在默認情況下,這個參數是false)。

 

  如果你運行在YARN模式,你可以在ResourceManager節點的WEB UI頁面選擇相關的應用程序,在頁面點擊表格中Tracking UI列的ApplicationMaster,這時候你可以進入到Spark作業監控的WEB UI界面,這個頁面就是你Spark應用程序的proxy界面,比如http://www.iteblog.com:9981/proxy/application_1430820074800_0322,當然你也可以通過訪問Driver所在節點開啟的4040端口,同樣可以看到這個界面。

  到這個界面之后,可以點擊Executors菜單,這時候你可以進入到Spark程序的Executors界面,里面列出所有Executor信息,以表格的形式展示,在表格中有Logs這列,里面就是你Spark應用程序運行的日志。如果你在程序中使用了println(....)輸出語句,這些信息會在stdout文件里面顯示;其余的Spark運行日志會在stderr文件里面顯示。

  在默認情況下,Spark應用程序的日志級別是INFO的,我們可以自定義Spark應用程序的日志輸出級別,可以到$SPARK_HOME/conf/log4j.properties文件里面進行修改,比如:

01 # User: 過往記憶
02 # Date: 2015-05-015
03 # Time: 上午07:26
06 # 過往記憶博客,專注於hadoop、hive、spark、shark、flume的技術博客,大量的干貨
07 # 過往記憶博客微信公共帳號:iteblog_hadoop
08 spark.root.logger=WARN,console
09  
10 log4j.rootLogger=${spark.root.logger}
11  
12 log4j.appender.console=org.apache.log4j.ConsoleAppender
13 log4j.appender.console.target=System.err
14 log4j.appender.console.layout=org.apache.log4j.PatternLayout
15 log4j.appender.console.layout.ConversionPattern=%d (%t) [%p - %l] %m%n

這樣Spark應用程序在運行的時候會打出WARN級別的日志,然后在提交Spark應用程序的時候使用--files參數指定上面的log4j.properties文件路徑即可使用這個配置打印應用程序的日志。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM