./spark-shell启动不正确(spark1.6.1-bin.hadoop2.6版本)

3
我安装了这个Spark版本:spark-1.6.1-bin-hadoop2.6.tgz。
现在当我使用./spark-shell命令启动Spark时,出现了以下问题(它显示了很多错误行,所以我只列出了一些看起来比较重要的):
     Cleanup action completed
        16/03/27 00:19:35 ERROR Schema: Failed initialising database.
        Failed to create database 'metastore_db', see the next exception for details.
        org.datanucleus.exceptions.NucleusDataStoreException: Failed to create database 'metastore_db', see the next exception for details.
            at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:516)

        Caused by: java.sql.SQLException: Directory /usr/local/spark-1.6.1-bin-hadoop2.6/bin/metastore_db cannot be created.
            org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
            ... 128 more
        Caused by: ERROR XBM0H: Directory /usr/local/spark-1.6.1-bin-hadoop2.6/bin/metastore_db cannot be created.


        Nested Throwables StackTrace:
        java.sql.SQLException: Failed to create database 'metastore_db', see the next exception for details.
  org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
            ... 128 more
        Caused by: ERROR XBM0H: Directory /usr/local/spark-1.6.1-bin-hadoop2.6/bin/metastore_db cannot be created.
            at org.apache.derby.iapi.error.StandardException.newException


        Caused by: java.sql.SQLException: Directory /usr/local/spark-1.6.1-bin-hadoop2.6/bin/metastore_db cannot be created.
            at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
            at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
            at 
            ... 128 more

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

        scala> 

我尝试了一些配置来解决这个问题,我在其他关于“找不到值sqlContext”的问题上搜索过,例如:
/etc/hosts文件:
127.0.0.1  hadoophost localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.2.0.15 hadoophost

echo $HOSTNAME 返回:

hadoophost

.bashrc 文件包含:

export SPARK_LOCAL_IP=127.0.0.1

但是它不起作用,你能给一些帮助来尝试理解为什么Spark无法正确启动吗?
hive-default.xml.template
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
--><configuration>
  <!-- WARNING!!! This file is auto generated for documentation purposes ONLY! -->
  <!-- WARNING!!! Any changes you make to this file will be ignored by Hive.   -->
  <!-- WARNING!!! You must make your changes in hive-site.xml instead.         -->

在主文件夹中,我遇到了相同的问题:
[hadoopadmin@hadoop home]$ pwd
/home
[hadoopadmin@hadoop home]$ 

文件夹权限:
[hadoopdadmin@hadoop spark-1.6.1-bin-hadoop2.6]$ ls -la
total 1416
drwxr-xr-x. 12 hadoop hadoop    4096 .
drwxr-xr-x. 16 root   root      4096  ..
drwxr-xr-x.  2 hadoop hadoop    4096  bin
-rw-r--r--.  1 hadoop hadoop 1343562  CHANGES.txt
drwxr-xr-x.  2 hadoop hadoop    4096  conf
drwxr-xr-x.  3 hadoop hadoop    4096  data
drwxr-xr-x.  3 hadoop hadoop    4096  ec2
drwxr-xr-x.  3 hadoop hadoop    4096  examples
drwxr-xr-x.  2 hadoop hadoop    4096  lib
-rw-r--r--.  1 hadoop hadoop   17352  LICENSE
drwxr-xr-x.  2 hadoop hadoop    4096  licenses
-rw-r--r--.  1 hadoop hadoop   23529  NOTICE
drwxr-xr-x.  6 hadoop hadoop    4096  python
drwxr-xr-x.  3 hadoop hadoop    4096  R
-rw-r--r--.  1 hadoop hadoop    3359  README.md
-rw-r--r--.  1 hadoop hadoop     120  RELEASE
drwxr-xr-x.  2 hadoop hadoop    4096  sbin

我遇到了类似的问题,无法在本地运行Spark 1.6,你是如何解决这个问题的? - Mero
2个回答

10

显然,您没有写入该目录的权限,我建议在您的HOME目录下运行./spark-shell(您可能希望将该命令添加到PATH中),或者在任何其他可访问且可写入的目录中运行。

这对您也可能有用:与Spark一起使用Notebooks


感谢您的回答。但我仍然遇到了同样的错误! - codin
@codin 请展示终端的输出,您当前所在的目录以及该目录的权限。 - Alberto Bonsanto

4

您正在使用支持Hive的Spark。

根据您对spark-shell或spark作业的后续需求,有两种可能的解决方案 -

  1. 您想要访问安装在Hadoop + Hive上的Hive表。 您应该将hive-site.xml放置在spark安装的conf子目录中。从现有的Hive安装中找到hive-site.xml。例如,在我的Cloudera VM中,hive-site.xml位于/usr/lib/hive/conf。执行此步骤后启动spark-shell应该可以成功连接到现有的hive元数据存储,并且不会尝试在当前工作目录中创建临时的.metastore数据库。
  2. 您不想访问安装在Hadoop + Hive上的Hive表。 如果您不关心连接到hive表,则可以遵循Alberto的解决方案。修复启动spark-shell的目录中的权限问题。确保您被允许在该目录中创建目录/文件。

希望这可以帮助您。


1
感谢您的回答。我正在尝试您提供的第一个方法。但是错误仍然存在。我正在使用hive-1.2.1,并且我复制了hive-default.xml.template,但问题仍然存在。 - codin
1
@codin 请找到 hive-site.xml 文件。Spark 将会在其配置目录下寻找 hive-site.XML 文件。您可以尝试将 hive-default.XML 文件重命名为 hive-site.xml,并放置在 Spark 的配置目录中。 - Pranav Shukla
好的,所以您也手动下载了hive-1.2.1吗?也就是说,您使用的hive版本没有包含在任何标准的hadoop发行版中?您是手动设置了hadoop和hive(即没有使用任何cloudera或hortonworks等快速启动VM)吗? - Pranav Shukla
2
如果您只是在开发环境中进行 POC,请使用快速入门虚拟机,因为获取 hadoop + hive 等可能会非常复杂。如果您已经正确配置了 Hive,您仍然可以像之前一样(1.6)使用自己的 Spark 版本,并且应该具备 hive-site.xml。 - Pranav Shukla
2
快速启动虚拟机将帮助您学习,因为它具有所有配置的完全工作设置,您可以将其作为参考并进行推理。当然,手动完成所有操作是学习所有内部知识的好方法。对于Hadoop的初学者来说,学习所有技术、它们的配置,然后实际使用Spark或Map-Reduce进行编程是令人生畏的。建议至少使用快速启动虚拟机来排除任何错误配置,以便专注于学习实际的分布式计算。 - Pranav Shukla
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接