当Hadoop上的文件并非所有副本都可以存储在群集上时,将其存储在Hadoop上

时间:2015-04-28 13:48:09

标签: hadoop hdfs replication

如果我的Hadoop集群(复制因子= 3)只剩下15GB的空间并且我尝试保存一个6GB大小的文件,有人可以告诉我会发生什么吗?

hdfs dfs -put 6gbfile.txt /some/path/on/hadoop

put操作是否会失败(可能是群集已满)或是否会保存6GB文件的两个副本,并将无法保存在群集中的块标记为未复制,从而占用整个15GB的剩余?

2 个答案:

答案 0 :(得分:2)

什么时候发出put命令:

dfs实用程序在这里表现得像客户端。

客户端将首先联系namenode,然后namenode将引导客户端,在哪里编写块并保留该文件的维护元数据,然后其客户端负责根据指定的配置在块中中断数据。

然后客户端将与不同的数据节点建立直接连接,根据namenode的回复,它必须写入不同的块。

第一份数据副本将由客户端仅在数据节点上写入,后续副本数据节点将在namenode的指导下相互创建。

因此,如果有15 GB的空间,你应该可以放入6 GB的文件,因为最初原始副本是在hadoop上创建的,稍后一旦复制过程开始,就会出现问题。

答案 1 :(得分:2)

您应该能够存储该文件。

它将尝试容纳尽可能多的副本。当它无法存储所有副本时,它将发出警告但不会失败。因此,您将获得重复不足的块。

您将看到的警告是

WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Not able to place enough replicas