2016-05-17 25 views
1

我必须为需要在HDFS上存储数据的应用程序创建一个帐户。 我了解,创建于HDFS用户(我使用HDP 2.3),我必须执行这些命令:我需要在哪里创建HDFS用户?

useradd -G *groupname* *username* 
hdfs dfs -mkdir /user/*username* 
hdfs dfs -chown *username*:*groupname* /user/*username* 

我的问题是: 我明白,当我HDFS上创建一个文件夹,这是不在所有集群上复制,只有数据分散在所有数据节点上。 我是否在群集的每个节点(namenode + datanode + edgenode)上执行这些命令,或者只在应用程序用于访问HDFS(在我的情况下是边缘节点)的节点上执行这些命令?

谢谢。

回答

2

正如您可能知道的那样,只有元数据存储在名称节点上,数据存储在数据节点上。

useradd -G <groupname> <username> 
hdfs dfs -mkdir /user/<username> 
hdfs dfs -chown <username>:<groupname> /user/<username> 

上述命令是元数据的一部分,因此这些信息将存储在名称节点上。因此,您需要在集群的边缘节点上执行上述命令,并将从上述命令生成的元数据存储在名称节点上。

只有当数据存储发生时,Data节点才会进入画面。

结论:只需在集群的edge node上执行上述命令。

+0

谢谢!非常清楚! –

1

每当客户想要存储或处理存储在HDFS上的数据时,NN首先会检查它是否有权访问该数据。根据访问级别,数据将由用户访问。

您不必在每个DN上运行上述命令。访问将在NN自己检查,并根据用户的类型,数据将被访问。您只能在NN上运行这些命令,并且NN会在后续处理。

相关问题