在安装了Hive的群集中,如果我想放置文件或从datanode创建一个表,会发生什么?
如果我这样做,它会联系namenode并执行通常的
答案 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
。
不知道这是否正是您所需要的。