11

我刚开始使用 Apache Hive,我使用的是本地 Ubuntu 机器 12.04,带有 Hive 0.10.0 和 Hadoop 1.1.2。

按照 Apache 网站上的官方“入门”指南,我现在停留在 Hadoop 命令上,以使用指南中的命令创建配置单元元存储:

$ $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而是列出了当前目录。

那么,我该如何解决呢?

4

10 回答 10

23

文档的几乎所有示例都有此命令错误。就像 unix 一样,除非您已经创建了父目录,否则您也需要“-p”标志来创建父目录。该命令将起作用。

$HADOOP_HOME/bin/hadoop fs -mkdir -p    /user/hive/warehouse
于 2014-09-10T05:59:15.063 回答
6

在本地系统上运行 hive 时,只需添加到 ~/.hiverc:

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

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

这可能是Ambarish Hazarnis在说“或在您的主目录中创建仓库”时所牢记的。

于 2014-03-05T22:07:31.427 回答
3

这似乎是一个权限问题。您有权访问根文件夹 / 吗?尝试以下选项 -

1. Run command as superuser

OR

2.Create the warehouse in your home directory. 

让我们知道这是否有帮助。祝你好运!

于 2013-09-28T17:27:15.463 回答
1

为遇到同样问题的 Cloudera CDH 用户添加参考答案。

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

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

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

于 2017-05-19T14:20:28.567 回答
1

在 spark 配置中设置 hadoop 属性时,在它们前面加上spark.hadoop.

因此设置

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

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

于 2017-05-08T20:33:28.660 回答
0

虽然这是一个简单的权限问题,但我在上面的评论中使用 sudo 解决了这个问题,但有几点需要注意:

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

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

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

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

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

于 2013-09-29T15:11:52.560 回答
0

如果您正在运行 linux 检查(在 hadoop core-site.xml 中)数据目录和权限,看起来您已经保留了默认值,即 /data/tmp 并且我在大多数情况下将获得 root 权限.. 更改 xml 配置文件,删除 /data/tmp 并运行 fs 格式(修改核心 xml 配置后的 OC)

于 2014-07-13T15:59:53.923 回答
0

我推荐使用更高版本的 hive 即 1.1.0 版本,0.10.0 是非常错误的。

于 2015-11-24T14:18:40.093 回答
0
  • 运行此命令并尝试创建一个目录,它将授予 hdfs /user 目录中的用户完全权限。 hadoop fs -chmod -R 755 /用户
于 2015-11-25T12:27:13.927 回答
0

我使用 MacOS 和 homebrew 作为包管理器。我必须将 hive-site.xml 中的属性设置为

<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/usr/local/Cellar/hive/2.3.1/libexec/conf/warehouse</value>
</property>
于 2019-04-19T19:41:29.777 回答