【问题标题】:Spark-Shell Startup ErrorsSpark-Shell 启动错误
【发布时间】:2016-09-23 09:34:09
【问题描述】:

使用spark-1.6.0-bin-hadoop2.6 启动spark-shell 时出现错误。这是刚刚出现的新行为。

以下日志消息中显示的失败结果是 sqlContext 不可用(但 sc 可用)。

是否有某种可以释放的 Derby 锁? Another instance of Derby may have already booted the database /root/spark-1.6.0-bin-hadoop2.6/bin/metastore_db.

<console>:16: error: not found: value sqlContext
         import sqlContext.implicits._
                ^
<console>:16: error: not found: value sqlContext
         import sqlContext.sql

16/05/25 11:00:00 ERROR Schema: Failed initialising database.
Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@c2191a8, see the next exception for details.
org.datanucleus.exceptions.NucleusDataStoreException: Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@c2191a8, see the next exception for details.


16/05/25 11:06:02 WARN Hive: Failed to access metastore. This class should not accessed in runtime.
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient


16/05/25 11:06:02 ERROR Schema: Failed initialising database.
Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@372e972d, see the next exception for details.
org.datanucleus.exceptions.NucleusDataStoreException: Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@372e972d, see the next exception for details.

Caused by: java.sql.SQLException: Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@c2191a8, see the next exception for details.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
        ... 134 more
Caused by: java.sql.SQLException: Another instance of Derby may have already booted the database /root/spark-1.6.0-bin-hadoop2.6/bin/metastore_db.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
        ... 131 more
Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database /root/spark-1.6.0-bin-hadoop2.6/bin/metastore_db.

【问题讨论】:

  • 是的,有一个 Derby 锁定文件可以防止两个不相关的应用程序尝试同时更新同一个嵌入式数据库。
  • 修改或删除该文件以解决此问题是否有意义?
  • 不,这会导致数据库损坏。正确的方法是弄清楚哪些是独立尝试同时打开同一个嵌入式数据库的两个应用程序,以及为什么它们都尝试同时运行。要么给他们各自的数据库,不要同时运行它们,要么重新配置您的系统,以便他们可以使用 Derby 服务器而不是 Derby 嵌入式数据库配置来共享数据库。
  • 谢谢布莱恩。当 spark-shell 没有正常退出时(如在挂起的会话中),这似乎会发生,然后一个新会话调用 spark-shell。在这种情况下,有什么办法可以“重置”嵌入式数据库,即关闭挂起的连接?
  • 当 Derby 以嵌入式模式运行时,Derby 代码直接在包含的 JVM 中运行。除了从该 JVM 中的 Java 代码之外,没有其他方法可以与 Derby 代码进行通信,并且无法在不停止包含的 JVM 的情况下停止 Derby 引擎。与数据库的“连接”完全在包含 JVM 的连接中。还有其他行为不同的 Derby 配置(例如,客户端-服务器),但对于嵌入式配置,这是现实情况。

标签: apache-spark derby


【解决方案1】:

问题似乎是短暂的,因为我们不再遇到这种行为。

【讨论】:

  • 我在 2.1.0 和 2.1.0 上都有它
【解决方案2】:

在尝试创建DataFrame 时,我在 Spark 2.0.0 shell 中遇到了类似问题,只需删除 metastore_db/dbex.lck 即可解决问题。

【讨论】:

  • 为了数据安全,最好不要这样做
  • @Pengfei.X 为什么?你有什么建议?
  • 它也对我有用,不知道为什么突然出现这个错误.. 谢谢。
  • 我确实删除了metastore_db目录,问题解决了。这个目录是临时的。如果你删除它,它会重新创建。
  • 删除 dbex.lck 对我不起作用(Spark 2.3.0)。我也尝试删除所有 metastore_db,但这也没有用。使用 sudo 运行 spark-shell 就像下面安迪所说的那样,但这似乎不是一个理想的解决方案。
【解决方案3】:

解决问题的最佳方法是首先重新启动系统,然后转到 spark 主目录,然后尝试使用 sudo 用户使用 spark-shell 运行。

sudo bin/spark-shell

或者如果你想使用 pyspark 实例,类型

sudo bin/pyspark

问题主要是由于 mertstore_db 的权限不足。

【讨论】:

    【解决方案4】:

    出现这个问题是因为 Metastore_db,它是在 spark shell 寻找 db 并开始注册它时创建的。您可以完全删除 metastore_db,因为每次都会创建它。如果您无法删除 然后先删除 metastore_db/dbex.lck 然后你就可以删除 metastore_db 文件夹了。我用过 spark2.1.10 并且之前遇到过同样的问题。

    【讨论】:

      【解决方案5】:

      类似于安迪的回答。我在 Windows 中遇到了同样的问题,这里是解决方案:

      1. 以管理员身份在 windows 上运行 cmd
      2. 导航到 spark 主目录
      3. 打开火花壳

        c:\park\bin> 火花壳

      【讨论】:

        【解决方案6】:

        在我的例子中,Hive 也是与 Spark 一起启动的。所以我关闭了 Hive 服务器并重新启动了 Spark shell 以使其工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-14
          • 1970-01-01
          • 1970-01-01
          • 2016-01-10
          • 1970-01-01
          相关资源
          最近更新 更多