Spark 启动历史任务记录进程,报错 Logging directory must be specified解决

最近在自己电脑上装了Spark 单机运行模式,Spark 启动没有任何问题,可是启动spark history时,一直报错,错误信息如下:

Spark assembly has been built with Hive, including Datanucleus jars on classpath
Spark Command: /usr/local/java/jdk1.7.0_67/bin/java -cp ::/usr/local/spark/conf:/usr/local/spark/lib/spark-assembly-1.1.0-hadoop2.4.0.jar:/usr/local/spark/lib/datanucleus-core-3.2.2.jar:/usr/local/spark/lib/datanucleus-api-jdo-3.2.1.jar:/usr/local/spark/lib/datanucleus-rdbms-3.2.1.jar:/usr/local/hadoop/etc/hadoop -XX:MaxPermSize=128m -Dspark.akka.logLifecycleEvents=true -Xms512m -Xmx512m org.apache.spark.deploy.history.HistoryServer
========================================

15/01/07 15:08:55 INFO history.HistoryServer: Registered signal handlers for [TERM, HUP, INT]
15/01/07 15:08:55 INFO spark.SecurityManager: Changing view acls to: root,
15/01/07 15:08:55 INFO spark.SecurityManager: Changing modify acls to: root,
15/01/07 15:08:55 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root, ); users with modify permissions: Set(root, )
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.apache.spark.deploy.history.HistoryServer$.main(HistoryServer.scala:187)
        at org.apache.spark.deploy.history.HistoryServer.main(HistoryServer.scala)
Caused by: java.lang.IllegalArgumentException: Logging directory must be specified.
        at org.apache.spark.deploy.history.FsHistoryProvider$$anonfun$2.apply(FsHistoryProvider.scala:41)
        at org.apache.spark.deploy.history.FsHistoryProvider$$anonfun$2.apply(FsHistoryProvider.scala:41)
        at scala.Option.getOrElse(Option.scala:120)
        at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:41)
        ... 6 more
/usr/local/spark/sbin/../logs/spark-root-org.apache.spark.deploy.history.HistoryServer-1-macor.out (END)

错误提示是 log directory 没有指定,找了半天也不知道该怎么设置,另外在这篇文章中《Spark History Server处理流程分析》有相应的源码分析,通过学习,知道了是  spark.history.fs.logDirectory参数未指定,可是我还是不知道怎么设置啊!后来在这篇《Spark
History Server配置使用
》文章中,知道可以有如下两种方法解决:

1.在启动 spark history进程时指定 spark.history.fs.logDirectory的值,如下:

    start-history-server.sh hdfs://localhost:9000/sparkHistoryLogs

2.在conf/spark-defaults.conf中配置

history server相关的配置参数描述

1) spark.history.updateInterval

  默认值:10

  以秒为单位,更新日志相关信息的时间间隔

2)spark.history.retainedApplications

  默认值:50

  在内存中保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,当再次访问已被删除的应用信息时需要重新构建页面。

3)spark.history.ui.port

  默认值:18080

  HistoryServer的web端口

4)spark.history.kerberos.enabled

  默认值:false

  是否使用kerberos方式登录访问HistoryServer,对于持久层位于安全集群的HDFS上是有用的,如果设置为true,就要配置下面的两个属性

5)spark.history.kerberos.principal

  默认值:用于HistoryServer的kerberos主体名称

6)spark.history.kerberos.keytab

  用于HistoryServer的kerberos keytab文件位置

7)spark.history.ui.acls.enable

  默认值:false

  授权用户查看应用程序信息的时候是否检查acl。如果启用,只有应用程序所有者和spark.ui.view.acls指定的用户可以查看应用程序信息;否则,不做任何检查

8)spark.eventLog.enabled

  默认值:false

  是否记录Spark事件,用于应用程序在完成后重构webUI

9)spark.eventLog.dir

  默认值:file:///tmp/spark-events

  保存日志相关信息的路径,可以是hdfs://开头的HDFS路径,也可以是file://开头的本地路径,都需要提前创建

10)spark.eventLog.compress

  默认值:false

  是否压缩记录Spark事件,前提spark.eventLog.enabled为true,默认使用的是snappy

以spark.history开头的需要配置在spark-env.sh中的SPARK_HISTORY_OPTS,以spark.eventLog开头的配置在spark-defaults.conf

spark-defaults.conf

spark.eventLog.enabled  true
spark.eventLog.dir      hdfs://localhost:9000/eventLogs
spark.eventLog.compress true

spark-env.sh

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://localhost:9000/sparkHistoryLogs"

参数描述:

spark.history.ui.port=7777  调整WEBUI访问的端口号为7777,端口可以根据自己修改

spark.history.fs.logDirectory=hdfs://localhost:9000/sparkHistoryLogs  配置了该属性后,在start-history-server.sh时就无需再显示的指定路径,需要根据实际修改

spark.history.retainedApplications=3   指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除

调整参数后启动start-history-server.sh就不需要加参数了

start-history-server.sh 

此文进用于备忘和学习,若有不对,敬请指教!

参考:http://www.cnblogs.com/luogankun/p/4089767.html

http://www.cnblogs.com/luogankun/p/3981645.html

时间: 2024-10-29 19:10:26

Spark 启动历史任务记录进程,报错 Logging directory must be specified解决的相关文章

node启动时, listen EADDRINUSE 报错;

1.启动时, listen  EADDRINUSE 报错: 查看是因为 端口被占用了,换了端口 还是不行:      查看了 被占用的端口,端口没有为:4000: 突然想到,每次启动node服务后,都没有关闭: 于是,查看任务进程,把node.js进程关闭后,重新启动 node环境即可!

zabbix启动报错:Connection to database &#39;xxx&#39; failed解决方法

Zabbix 分布式系统监视系统 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. 本文讲解的是zabbix无法启动报错:Connection to database 'xxx' failed: [1045] Access denied for user 'xxx'@'localhost' (using password: NO)

rlwrap安装报错You need the GNU readline 解决方法

首先大家肯定知道rlwrap是干什么的? 在linux以及unix中,sqlplus的上下左右.回退无法使用,会出现乱码情况.而rlwrap这个软件就是用来解决这个的. 这个错误曾经困扰我很久很久!下载readline 安装,安装好readline 还是无法运行rlwrap的安装程序 在网上搜寻很久才找到一个靠谱的解决方法 原来rlwrap这个程序的安装,需要依赖两个包, 一个是readline,这个readline在RHEL中已经集成了.不需要去专门下载 另外一个包 libtermcap-de

linux上项目报错找不到主机名解决办法

项目报错找不到主机名解决办法 有时候我们的项目在本地运行没问题,但部署到linux服务器上就出错了. 报错:java.net.UnknownHostException: 主机名: 主机名  找不到主机名. 解决方法: 修改服务器上/etc/hosts文件 127.0.0.1  localhost  localhost.localdomain 添加所需的主机名称 或者 127.0.0.1  localhost  localhost.localdomain 127.0.0.1  添加所需的主机名称

python安装locustio报错error: invalid command &#39;bdist_wheel&#39;的解决方法

locust--scalable user load testing tool writen in Python(是用python写的.规模化.可扩展的测试性能的工具) 安装locustio需要的环境条件是:Python2.6+,但是不支持Python3. 今天在cmd里运行pip install locustio,报错提示:error: invalid command 'bdist_wheel'. 原因:pip和setuptools的版本较低. 解决方案:升级pip和setuptools. 一

PHP安装mcrypt.so报错 mcrypt.h not found 的解决办法

报错内容:configure: error: mcrypt.h not found. Please reinstall libmcrypt 网上搜索了很多,包括自带的 yum install libmcrypt libmcrypt-devel,这个是没有效果的. 去SourceForget下载libmcrypt http://sourceforge.net/projects/mcrypt/files/Libmcrypt/ ,最新版是mcrypt 2.6.7.gz.下载下来安装仍旧报错libmcr

Navicat 连接MySQL数据库 报错2059 - authentication plugin &#39;caching_sha2_password&#39;的解决办法

#在数据库的命令行中输入以下代码即可解决,密码必须要修改 可以再次执行将密码改回来. use mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; Navicat 连接MySQL数据库 报错2059 - authentication plugin 'caching_sha2_password'的解决办法 原文地址:https://www.cnblogs.com/liuha

运行Scrapy工程,报错ModuleNotFoundError: No module named &#39;win32api&#39;解决方法

1.运行爬虫scrapy crawl name,报错ScrpyModuleNotFoundError: No module named 'win32api' 2.解决方法: 在https://github.com/mhammond/pywin32/releases找到合适的软件,进行下载安装. 3.完成安装: 4.安装成功后,再次运行scrapy crawl name.运行成功 运行Scrapy工程,报错ModuleNotFoundError: No module named 'win32api

php-fpm linux环境使用exec函数调用ffmpeg,报错ffmpeg: command not found的解决方法

原文链接:http://www.bowen-tech.top/articles/detail/25 php-fpm linux环境使用exec函数调用ffmpeg,报错ffmpeg: command not found的解决方法 打印具体报错命令 0 => 'sh: ffmpeg: command not found', 具体原因是通过PHP调用这个命令,没有引入对应的环境变量,导致找不到这个命令 解决办法 在PHP-fpm.conf的配置文件里面把下面几行前面的;去掉我的PHP配置文件php-