Hive无法创建/ user / hive / warehouse

时间:2013-09-28 15:57:50

标签: hadoop hive

我刚刚开始使用Apache Hive,我正在使用我的本地Ubuntu盒子12.04,Hive 0.10.0和Hadoop 1.1.2。

遵循Apache网站上的官方“Getting Started”指南,我现在停留在Hadoop命令中,使用指南中的命令创建hive Metastore:

$ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse

错误为mkdir: failed to create /user/hive/warehouse

Hive是否需要在特定模式下使用hadoop?我知道我不需要为我的Hadoop安装做太多其他更新JAVA_HOME,因此它处于独立模式。我确信Hadoop本身正在工作,因为我运行了hadoop安装附带的PI示例。

此外,创建/tmp的另一个命令显示/tmp目录已存在,因此未重新创建,/bin/hadoop fs -ls列出当前目录。

那么,我怎么能绕过它呢?

10 个答案:

答案 0 :(得分:22)

几乎所有文档示例都有错误。就像unix一样,你需要" -p"标志也可以创建父目录,除非您已经创建了它们。这个命令可以工作。

$HADOOP_HOME/bin/hadoop fs -mkdir -p    /user/hive/warehouse

答案 1 :(得分:4)

在本地系统上运行配置单元时,只需添加到〜/ .hiverc:

SET hive.metastore.warehouse.dir=${env:HOME}/Documents/hive-warehouse;

您可以指定要用作仓库的任何文件夹。显然,任何其他hive configuration方法都可以(例如hive-site.xml或hive -hiveconf)。

在说“或在您的主目录中创建仓库”时,可能会想到 Ambarish Hazarnis

答案 2 :(得分:3)

这似乎是一个许可问题。你有权访问根文件夹/? 请尝试以下选项 -

1. Run command as superuser

OR

2.Create the warehouse in your home directory. 

如果有帮助,请告诉我们。祝你好运!

答案 3 :(得分:1)

在spark配置中设置hadoop属性时,请在其前面添加spark.hadoop

因此设置

conf.set("spark.hadoop.hive.metastore.warehouse.dir","/new/location")

这适用于旧版本的Spark。该属性已更改为spark 2.0.0

答案 4 :(得分:1)

为看到同样问题的Cloudera CDH用户添加ref的答案。

如果您使用的是Cloudera CDH发行版,请确保已按照以下步骤操作:

  • 点击桌面图标启动Cloudera Manager(Express / Enterprise)。
  • 在浏览器中打开Cloudera Manager页面
  • 启动所有服务

Cloudera默认创建了/ user / hive / warehouse文件夹。只是YARN和HDFS可能无法启动并运行以访问此路径。

答案 5 :(得分:0)

虽然这是一个简单的权限问题,在上面的评论中使用sudo解决了这个问题,但有一些注意事项:

  1. 在主目录中创建它应该也可以,但是你可能需要更新Metastore路径的hive设置,我认为默认为/ user / hive / warehouse

  2. 我遇到了另一个带有Hive shell的CREATE TABLE语句错误,错误是这样的:

  3. 蜂房> CREATE TABLE戳(foo INT,bar STRING); FAILED:元数据错误:MetaException(消息:异常:java.io.FileNotFoundException文件文件:/ user / hive / warehouse / pokes不存在。) FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1

    它变成了另一个权限问题,您必须创建一个名为“hive”的组,然后将当前用户添加到该组,并将/ user / hive / warehouse的所有权更改为该组。在那之后,它的工作原理。详情可在以下链接中找到:

    http://mail-archives.apache.org/mod_mbox/hive-user/201104.mbox/%3CBANLkTinq4XWjEawu6zGeyZPfDurQf+j8Bw@mail.gmail.com%3E

答案 6 :(得分:0)

如果你运行linux check(在hadoop core-site.xml中)数据目录&权限,看起来你保留了默认的/ data / tmp和im大多数情况下都会获得root权限。 更改xml配置文件,删除/ data / tmp并运行fs格式(修改核心xml配置后的OC)

答案 7 :(得分:0)

我建议使用hive的上层版本,即1.1.0版本,0.10.0非常错误。

答案 8 :(得分:0)

  • 运行此命令并尝试创建一个目录,它将在hdfs / user目录中为该用户授予完全权限。 hadoop fs -chmod -R 755 / user

答案 9 :(得分:0)

我正在使用MacOS和自制软件作为程序包管理器。我必须将hive-site.xml中的属性设置为

<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/usr/local/Cellar/hive/2.3.1/libexec/conf/warehouse</value>
</property>