我必须创建 /tmp 和 /user/hive/warehouse 吗?

Posted

技术标签:

【中文标题】我必须创建 /tmp 和 /user/hive/warehouse 吗?【英文标题】:Do I have to create /tmp and /user/hive/warehouse? 【发布时间】:2019-05-14 01:18:48 【问题描述】:

来自https://cwiki.apache.org/confluence/display/Hive/GettingStarted

运行 Hive

Hive 使用 Hadoop,所以:

您的路径中必须有 Hadoop,或者 导出 HADOOP_HOME=

此外,您必须使用以下 HDFS 命令来创建 /tmp 和 /user/hive/warehouse(又名 hive.metastore.warehouse.dir)并设置它们 chmod g+w 才能在 Hive 中创建表。

  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

我无法运行这两个-mkdir 命令:

$ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
mkdir: `/tmp': File exists

`/tmp' 已经存在于我的 Ubuntu 的本地 ext4 文件系统中。

$ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
mkdir: `/user/hive/warehouse': No such file or directory

在我的 Ubuntu 本地 ext4 文件系统中没有 /usr/hive/warehouse

那么运行-mkdir创建这两个目录的目的是什么?

【问题讨论】:

【参考方案1】:

mkdir: `/tmp': 文件存在

此文件夹已存在于 hdfs 中。所以你在运行 mkdir 命令时收到“文件存在”错误。

您可以使用 list 命令查看:hadoop fs -ls /

mkdir: `/user/hive/warehouse': 没有这样的文件或目录

mkdir 命令创建新目录但不创建父目录。如果路径中不存在任何父目录,您将收到“没有这样的文件或目录”错误。在这种情况下,'user' 或 'hive' 目录都不存在。

您可以使用列表命令检查:hadoop fs -ls /user

使用“-p”选项运行“mkdir”命令会创建所有缺少的父目录。

hadoop fs -mkdir -p /user/hive/warehouse 

“/tmp”和“/user/hive/warehouse”目录都是在 hdfs 文件系统中创建的。您无法使用本地文件系统命令查看这些文件夹。

`/tmp' 已经存在于我的 Ubuntu 的本地 ext4 文件系统中。

此 /tmp 文件夹由您的操作系统维护,用于保存临时文件。与 hdfs 无关。

列出hdfs中的文件夹,

hadoop fs -ls /user
hadoop fs -ls /
hadoop fs -ls /user/hive/

【讨论】:

谢谢。如果您也可以考虑***.com/questions/56126071/…,我将不胜感激

以上是关于我必须创建 /tmp 和 /user/hive/warehouse 吗?的主要内容,如果未能解决你的问题,请参考以下文章

精选Hive高频面试题11道,附答案详细解析(好文收藏)

HIVE DDL

我想知道为啥我使用 sqoop 从 sqlserver 导入的 hive db 中的表正在消失

20190128学习

OpenCv 输入样本必须是浮点矩阵 ERROR

如何使用 Elastic Beanstalk 创建“tmp”目录?