0

在安装了 Hive 的集群中,如果我想从数据节点放置文件或创建表,会发生什么?

如果我这样做,它会联系namenode并照常做吗

4

1 回答 1

1

尽管元数据和元数据授权等相关内容由 Hive Metastore 控制,但底层数据仅由 HDFS 控制。因此,NameNode 从一开始就参与其中。

您可以在任何地方运行 hive,不一定在 namenode 上。您也可以在 DataNode 或名称节点以外的实用程序服务器上运行它。

当您在 Hive 中创建表时,将创建与该表对应的目录,并将相应的元数据添加到 NameNode 元数据文件(fsimage)中。这个新创建的目录的位置在由hive.metastore.warehouse.dir属性控制的目录中,默认为/user/hive/warehouse(如果需要,可以更改)。因此,如果您执行以下操作:

hive> create table t1(f1 int, f2 int) row format delimited fields terminated by ',';

它会在你的 HDFS 中创建一个空目录,如下所示:

/user/hive/warehouse/t1

现在,当您使用命令将一些数据加载到此表中时load,源文件将从源路径移动到/user/hive/warehouse/t1目录中。这又是一个文件系统系统操作,NameNode 也将参与其中。如果你做这样的事情:

load data inpath '/dir1/in.txt' into table t1;

这会将文件in.txt从目录移动到涉及 NameNode/dir1的目录中。/user/hive/warehouse/t1

不知道这是否正是你所需要的。

于 2013-06-11T11:59:29.140 回答