一、第一部分

1、spark2.1与hadoop2.7.3集成,spark on yarn模式下,需要对hadoop的配置文件yarn-site.xml增加内容,如下:

<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://node2:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

2、spark的conf/spark-defaults.conf配置

spark.yarn.historyServer.address=node2:18080
spark.history.ui.port=18080
spark.eventLog.enabled=true
spark.eventLog.dir=hdfs:///tmp/spark/events
spark.history.fs.logDirectory=hdfs:///tmp/spark/events

如果你是运行在yarn之上的话,就要告诉yarn,你spark的地址,当我在yarn上点击一个任务,进去看history的时候,他会链接到18080里面,如果你配的是node1:18080,那么你就要在node1上启动spark的history server(见后面注①)

最下面两个配置是运行spark程序的时候配置的,一旦你运行spark,就会将日志等发送到那两个目录,有了这两个目录,spark的historyserver就可以读取spark的运行状态信息日志等读取并展示

18080是spark的history server,会显示出你最近spark跑过的一些程序,点击execution后,点击最右边的日志(如果有的话),会重定向到19888(见后面注②),这个是mr的jobserver的地址(启动命令:mr-jobhistory-daemon.sh start historyserver

spark.yarn.historyServer.address和spark.history.ui.port如果缺少其中一个,日志就看不到

综上,1和2两个配置齐全,才可以查看spark的stdout和stderr日志

二、第二部分

实际上,在spark程序运行的时候,会起一个driver程序和多个executor程序,他们都是跑在nodemanager之上的,在启动程序的时候,如果我们在默认的配置项里面,配置了参数spark.eventLog.enabled=true,spark.eventLog.dir=地址,那么driver上就会把所有的事件全部给记录下来,事件包括,executor的启动,executor执行的task等发送给driver

每当写日志的时候,都有一个写日志的组件将日志写进那个目录里面,这个目录下面每一个应用程序都会存在一个文件,然后将会由spark的history server(也就是配置在spark-default.conf里面),这个server会在18080启动一个进程,去扫描日志目录,并解析每一个文件,进行还原,就得到了整个应用的状态

在hadoop-2.7.3/etc/hadoop/mapred-site.xml配置文件中

<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/user/history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/user/history/done_intermediate</value>
</property>

stdlog和err是每一个nodemanager上的每一个executor都会产生的,如果当程序完成后,在这个节点上,跟这个应用相关的所有信息全部会被清除掉,包括这些日志,这样的话如果我们不把这个日志收集起来,那么后面在历史信息(18080 executord模块的stderr和out)里面就看不到这些日志

为了能够看到这些日志,我们要做的事情是,让nodemanager开启一个日志聚合的功能,这个功能的作用是,当应用程序终止的时候,需要将这个应用程序产生的所有日志全部聚集到远程hdfs上的一个目录,聚集之后,还需要通过一个http的接口去查看这些日志,查看日志的这个角色就叫做mr的history server,通过她的web ui接口,当我们点击std日志的时候,就会跳转到mr job history server这个地址上19888上,然后去把这个日志展示出来

三、总结

总的来说,yarn-site.xml和conf/spark-defaults.conf这两个配置文件中的地址比较关键

http://node2:19888/jobhistory/logs : 对应的是点击strout的时候跳转的地址

spark.yarn.historyServer.address=node2:18080 :对应的是在yarn里点击history,跳转的地址

注①:

1、进入yarn的web ui页面,点击左侧FINISHED,可查看运行完的作业,点击一个app id

2、进入下图页面,点击History

3、重定向到conf/spark-defaults.conf配置的地址

注②:

具体步骤如下:

1、我先运行一个spark程序

bin/spark-shell --master local

2、登录Spark History server的web ui

http://node1:18080/

3、如下图,找到我刚才运行的程序

4、点击红框位置App ID,进入如下图页面

5、点击红框位置Executor,进入下图页面

6、右下角的stderr和stdout就是我们此行的目标了

<property>
<name>yarn.log.server.url</name>
<value>http://node2:19888/jobhistory/logs</value>
</property>

当你点击stderr或stdout,就会重定向到node2:19888,所以如果这里你配错了,那这两个日志你是看不了的

node2:19888是你的MapReduce job history server的启动节点地址

进入页面如下图

 
 

https://www.cnblogs.com/sorco/p/7070922.html

(转)spark日志配置的更多相关文章

  1. spark日志配置及问题排查方式。

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 任何时候日志都是定位问题的关键,spark也不会例外,合适的配置和获取spark的driver,am,及exe ...

  2. spark入门(四)日志配置

    1 背景 在测试spark计算时,将作业提交到yarn(模式–master yarn-cluster)上,想查看print到控制台这是很难的,因为作业是提交到yarn的集群上,所以,去yarn集群上看 ...

  3. Spark 属性配置

    1.Spark1.x 属性配置方式 Spark属性提供了大部分应用程序的控制项,并且可以单独为每个应用程序进行配置. 在Spark1.0.0提供了3种方式的属性配置: SparkConf方式 Spar ...

  4. Spark日志,及设置日志输出级别

    Spark日志,及设置日志输出级别 1.全局应用设置 2.局部应用设置日志输出级别 3.Spark log4j.properties配置详解与实例(摘录于铭霏的记事本) 文章内容来源: 作者:大葱拌豆 ...

  5. django 1.8 日志配置

    django 1.8 日志配置 以下为setings配置logging代码片段 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(_ ...

  6. nginx日志配置

    nginx日志配置 http://www.ttlsa.com/linux/the-nginx-log-configuration/ 日志对于统计排错来说非常有利的.本文总结了nginx日志相关的配置如 ...

  7. 日志配置logback

    在选择项目日志框架时,发现log4j的作者开发了新的日志框架,据说性能提高不少,那就选它了,不过,除了配置上有点不习惯外,最重要的一点 ,打印线程号这个功能依然没有(打印线程名这个东西是在是个鸡肋). ...

  8. 服务器是windows时tomcat无法打印所有日志配置修改

    Tomcat运行仅一天磁盘空间突然就增加了很多,发现是日志文件太大了,修改tomcat的日志配置即可. 查看目录所占空间大小: ? 1 [root@XXX webapps]du -sh 清理方法: ? ...

  9. [译]Stairway to Integration Services Level 12 - 高级日志配置

    介绍 本文中,我们将结合之前学习的时间冒泡,日志记录,以及复制模型.建立一个自定义的SSIS包日志模型. SSIS Task事件回顾    Reviewing SSIS Task Events 在做实 ...

随机推荐

  1. Python 文件 tell() 方法

    描述 Python 文件 tell() 方法返回文件的当前位置,即文件指针当前位置. 语法 tell() 方法语法如下: fileObject.tell() 参数 无 返回值 返回文件的当前位置. 实 ...

  2. Python 文件 read() 方法

    概述 Python 文件 read() 方法用于从文件中读取指定的字符数,如果未给定或为负则读取所有. 语法 read() 方法语法如下: fileObject.read([size]) 参数 siz ...

  3. 将逗号分隔的字符串与List互转

    将逗号分隔的字符串与List互转 方法 1: 利用JDK的Arrays类String str = "a,b,c";List<String> result = Array ...

  4. Knockout: 使用CSS绑定和event的blur失去焦点事件, 给未通过校验的输入框添加红色边框突出显示.

    目的:使用knockout提供的机制实现输入框失去焦点后的校验工作,并使用CSS绑定给未通过校验的输入框添加红色边框突出显示. 步骤: 先在htm中添加.error的css样式, 并在输入框中的dat ...

  5. python执行selenium报错

    python + unittest + HTMLTestRunner 执行suite用例报错 Traceback (most recent call last): File "C:/ws/S ...

  6. HBase中多Filter查询示例

    在Hbase查询中有时需要用到多个Filter关联的查询. 代码如下: ArrayList<Filter> listForFilters = new ArrayList<Filter ...

  7. git 修改历史提交信息

    当你不小心,写错了提交的注视/信息,该如何处理呢.理论上,SCM是不应该修改历史的信息的,提交的注释也是.   不过在git中,其commit提供了一个--amend参数,可以修改最后一次提交的信息. ...

  8. Atitit nodejs5 nodejs6  nodejs 7.2.1  新特性attialx总结

    Atitit nodejs5 nodejs6  nodejs 7.2.1  新特性attialx总结 1.1. Node.js 4.0.0 已经发布了 .这是和 io.js 合并之后的首个稳定版本,它 ...

  9. Vivado+FPGA:如何使用Debug Cores(ILA)在线调试(烧录到flash里可以直接启动)

    在Vivado下在线调试是利用ILA进行的,Xilinx官方给出了一个视频,演示了如何使用Vivado的debug cores,下面我根据这个官方视频的截图的来演示一下: 官方的视频使用的软件版本为2 ...

  10. [tools]hugo&github构建静态网站/百度统计

    hugo/github构建网站基本原理 1.hugo是一个静态化的工具,你写md,然后他把md转换成对应样式的html, 2.并给html嵌入百度统计的script.然后你将html放到github上 ...