当我们从Hive中的datanode访问时会发生什么?

时间:2013-06-11 06:34:51

标签: hive

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

如果我这样做,它会联系namenode并执行通常的

1 个答案:

答案 0 :(得分:1)

虽然元数据和元数据授权等相关内容由Hive Metastore控制,但基础数据仅由HDFS控制。因此,NameNode从一开始就非常关注。

您可以在任何地方运行配置单元,而不必在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从目录/dir1移动到涉及NameNode的目录/user/hive/warehouse/t1

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