如果我的Hadoop集群(复制因子= 3)只剩下15GB的空间并且我尝试保存一个6GB大小的文件,有人可以告诉我会发生什么吗?
hdfs dfs -put 6gbfile.txt /some/path/on/hadoop
put
操作是否会失败(可能是群集已满)或是否会保存6GB文件的两个副本,并将无法保存在群集中的块标记为未复制,从而占用整个15GB的剩余?
答案 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