`
扬州老鬼
  • 浏览: 302413 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

HDFS DATANODE 磁盘容量的最小值

阅读更多
原创,转载请注明出处


HDFS的DATANODE的剩余空间具体要到多大?关于这个问题,下面记录下对这个问题的调查

昨天,讨论群里面给出了一个异常:
op@odbtest bin]$ hadoop fs -put ../tmp/file3 /user/hadoop/in2
14/01/15 02:14:09 WARN hdfs.DFSClient: DataStreamer Exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/hadoop/in2/file3._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 1 datanode(s) running and no node(s) are excluded in this operation.
        at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1384)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2477)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:555)
        at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:387)
        at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:59582)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2048)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2044)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2042)


该异常的只在NN的日志中抛出,而DN中没有相关内容,这说明,这是在NN进行block分配的时候做了检查。

这种情况一般都是DATANODE 变成dead,或者是datanode的磁盘容量不够了。

所以建议问题提出者,给DN的datadir空出一部分空间之后,操作正常


但是,该问题的提出者,给出report 数据:
[hadoop@odbtest bin]$ hdfs dfsadmin -report
Configured Capacity: 8210259968 (7.65 GB)
Present Capacity: 599728128 (571.95 MB)
DFS Remaining: 599703552 (571.92 MB)
DFS Used: 24576 (24 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 1 (1 total, 0 dead)

Live datanodes:
Name: 192.168.136.128:50010 (odbtest)
Hostname: odbtest
Decommission Status : Normal
Configured Capacity: 8210259968 (7.65 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 7610531840 (7.09 GB)
DFS Remaining: 599703552 (571.92 MB)
DFS Used%: 0.00%
DFS Remaining%: 7.30%
Last contact: Tue Jan 14 23:47:26 PST 2014

按照report的数据DFS还剩下(571.92 MB)的大小,应该是可以创建的,但是抛出了这个异常,肯定是对DATANODE的剩余最小容量做了限制。查了一下HADOOP 2.2.0的源码,
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault的方法isGoodTarget中,会对DATANODE的剩余容量进行判断:
  long remaining = node.getRemaining() - 
                     (node.getBlocksScheduled() * blockSize); 
    // check the remaining capacity of the target machine
    if (blockSize* HdfsConstants.MIN_BLOCKS_FOR_WRITE>remaining) {
      if(LOG.isDebugEnabled()) {
        threadLocalBuilder.get().append(node.toString()).append(": ")
          .append("Node ").append(NodeBase.getPath(node))
          .append(" is not chosen because the node does not have enough space ");
      }
      return false;
    }

代码中说了,当剩余容量小于blockSize* HdfsConstants.MIN_BLOCKS_FOR_WRITE的时候,会返回false,而默认情况下 blockSize* HdfsConstants.MIN_BLOCKS_FOR_WRITE=128M*5=640M> 571.92 MB,这就解释了这个异常发生的原因。
0
0
分享到:
评论

相关推荐

    docker-hdfs-datanode:用于运行 hdfs 数据节点的 Docker 容器

    在 docker 容器中运行 hdfs 数据节点 暴露端口 TCP 50010 dfs.datanode.address 数据传输端口 TCP 50020 dfs.datanode.ipc.address ipc 服务器 ...docker run -d --link namenode:namenode hauptmedia/hdfs-datanode

    Hadoop集群datanode磁盘不均衡的解决方案

    Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如集群中添加新的数据节点,节点与节点之间磁盘大小不一样等等。当hdfs出现不平衡状况的时候,将引发很多问题,比如MR程序无法很好地利用本地...

    12_尚硅谷大数据之HDFS_DataNode1

    6.2 数据完整性 6.3 掉线时限参数设置 6.4 服役新数据节点 6.5 退役旧数据节点

    HDFS体系结构(NameNode、DataNode详解)

    HDFS体系结构(NameNode、DataNode详解)

    hdfs源码.zip

    4.2.2 Datanode磁盘存储结构 315 4.2.3 DataStorage实现 317 4.3 文件系统数据集 334 4.3.1 Datanode上数据块副本的状态 335 4.3.2 BlockPoolSlice实现 335 4.3.3 FsVolumeImpl实现 342 4.3.4 ...

    Ambari修改DataNode存储目录

    HDFS DataNode定义的存储目录不正确或HDFS的存储规划变化时,需要修改DataNode的存储目录,以保障HDFS的正常工作,假定我们现在对应的HDFS数据盘位置为:/hadoop/hdfs/data; 预将数据目录迁移至/data/hadoop/hdfs/...

    ansible-hdfs:用于安装 Cloudera HDFS 的 Ansible 角色

    False ) hdfs_namenode_host - HDFS NameNode 的主机名(默认: localhost ) hdfs_namenode_port - HDFS NameNode 的端口(默认: 8020 ) hdfs_disks - HDFS DataNode 上可用的磁盘列表(默认值: [] ) hdfs_...

    vagrant-hadoop-spark:使用 Hadoop 和 Spark 启动集群虚拟机的 Vagrant 项目

    node3 : HDFS DataNode + YARN NodeManager + Spark Slave node4 : HDFS DataNode + YARN NodeManager + Spark Slave 入门 。 运行vagrant box add ubuntu/trusty64 Git 克隆这个项目,并将目录(cd)更改为这...

    HDFS的概念-namenode和datanode.pdf

    HDFS的概念-namenode和datanode.pdf 学习资料 复习资料 教学资源

    HDFS详解和配置文件

    HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)是Hadoop中...在HDFS中,数据存储的基本单位是Block,即文件上传到HDFS上之后,都会被切分为Block形式来进行存储,Block最终会落地到DataNode的磁盘上。

    HDFS Comics HDFS 漫画

    HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...

    [hadoop] ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. Starting datanodes

    在启动hadoop后,查看jps时看不到应该启动起来的东西 其中一个问题是报but there is no HDFS_NAMENODE_USER defined....HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SEC

    HDFS管理工具HDFS Explorer下载地址、使用方法.docx

    windows平台下的HDFS文件浏览器,就像windows管理器一样管理你的hdfs文件系统。现在官网已经停止更新这款软件。具体配置如下: HDFS配置页面及端口http://master:50070 配置HDFS服务器 配置WebHDFS HDFS Explorer...

    java操作hadoop之mapreduce计算整数的最大值和最小值实战源码

    java操作hadoop之mapreduce计算整数的最大值和最小值实战源码,附带全部所需jar包,欢迎下载一起学习。

    分布式存储系统——HDFS

    1. 分布式文件系统与HDFS 2. HDFS 的shell 操作 3. HDFS 体系结构与基本概念 4 HDFS 的web 接口 5. HDFS 的java 访问接口 ...8. DataNode 的接口分析 9. HDFS 的写数据过程分析 10. HDFS 的读数据过程分析

    Hadoop 2.X HDFS源码剖析

    《Hadoop 2.X HDFS源码剖析》以Hadoop 2.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...

    HDFS源码剖析带书签目录高清.zip

    《Hadoop 2.X HDFS源码剖析》以Hadoop 2.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...

    【HDFS篇10】DataNode相关概念1

    技术背景随着公司业务量越来越大,原来的数据节点已经不能满足其存储数据的需求,需要进行节点的动态扩充<name> dfs.heartbeat.interval

    HDFS文件的查看

    hdfs文件的查看 hdfs fs -cat /文件名

Global site tag (gtag.js) - Google Analytics