我必须为需要在HDFS上存储数据的应用程序创建一个帐户。 我知道在HDFS上创建用户(我使用的是HDP 2.3),我必须执行这些命令:
useradd -G *groupname* *username*
hdfs dfs -mkdir /user/*username*
hdfs dfs -chown *username*:*groupname* /user/*username*
我的问题是: 我知道当我在HDFS上创建一个文件夹时,并没有在所有集群上复制,只有数据在所有数据节点上传播。 我是否要在群集的每个节点(namenode + datanode + edgenode)上执行这些命令,或者仅在应用程序用于访问HDFS的节点上执行这些命令(在我的情况下是边缘节点)?
感谢。
答案 0 :(得分:2)
您可能知道,只有元数据存储在Name节点上,数据存储在Data节点上。
useradd -G <groupname> <username>
hdfs dfs -mkdir /user/<username>
hdfs dfs -chown <username>:<groupname> /user/<username>
以上命令是元数据的一部分,因此这些信息将存储在Name节点上。因此,您需要在集群的边缘节点上执行上述命令,并且从上述命令生成的元数据将存储在Name节点上。
只有在数据存储发生时,数据节点才会出现。
结论:只需在群集的edge node
上执行上述命令。
答案 1 :(得分:1)
Whenever a client want to store or process the data-stored on HDFS, NN will first check whether it has access to that. Based on the access level the data will acess by the user.
You doesnt have to run the above commands on every DN. Access will be check at the NN itself and based on the type of user, data will be accessible. You can run the commands on NN only and NN will take care after.