来自不同用户的火花外壳会导致错误



我创建并配置了小型Hadoop集群(1个主站和1个从站),并安装了spark。

我使用了预装spark-1.6.0-bin-hadoop2.6hadoop-2.7.

当我运行示例时

$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi 
    --master yarn 
    --deploy-mode cluster 
    --driver-memory 4g 
    --executor-memory 2g 
    --executor-cores 1 
    --queue thequeue 
    lib/spark-examples*.jar 
    10

从 HDUSER(拥有 /usr/local/hadoop 的用户),一切正常,但是当我尝试从同一用户运行bin/spark-shell时,会发生以下错误:

        Database Class Loader started - derby.database.classpath='' 16/03/02 16:55:32 ERROR Datastore.Schema:
 Failed initialising database. Cannot get a connection, pool error Could not create a validated object, cause:
 A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection. 
    org.datanucleus.exceptions.NucleusDataStoreException: Cannot get a connection, pool error Could not create a validated object, cause:
 A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.

但是,当我从拥有/usr/local/spark的用户user运行bin/spark-shell时,它工作正常。

我有两个问题:

首先,为什么首先会发生此错误?

其次,最好的处理方法是什么?也许让一个同时拥有Spark和hadoop的用户?还是不好的做法?

我不确定为什么,但对我来说解决这个问题的是首先关闭齐柏林飞艇。 但是这产生了您在上面看到的错误。所以我重新启动了服务器。 这可能是由于使用 control-C 退出 Spark shell 并让多个用户同时使用 SparkContext 引起的。

这可能与 Derby 有关,后者尝试在只读文件系统中写入。

可能的解决方法是在提交应用程序时更改 Derby 数据库路径:

--conf "spark.driver.extraJavaOptions= -Dderby.system.home=/tmp"

相关内容

  • 没有找到相关文章

最新更新