【问题标题】:Storing a file on Hadoop when not all of its replicas can be stored on the cluster当并非所有副本都可以存储在集群上时,将文件存储在 Hadoop 上
【发布时间】:2015-07-07 10:06:03
【问题描述】:

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

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

put 操作会失败并给出错误(可能是集群已满)还是会保存 6GB 文件的两个副本并将无法保存在集群上的块标记为复制不足,从而占用整个 15GB剩下的?

【问题讨论】:

    标签: hadoop hdfs replication


    【解决方案1】:

    当你触发 put 命令时:

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

    客户端将首先联系namenode,然后namenode将指导客户端,将块写入何处,并将维护该文件的元数据,然后客户端负责根据指定的配置将数据分解为块。

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

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

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

    【讨论】:

      【解决方案2】:

      您应该能够存储该文件。

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

      您会看到的警告是

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

      【讨论】:

        猜你喜欢
        • 2014-06-22
        • 1970-01-01
        • 2017-07-15
        • 2012-03-22
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多