原创,转载请注明出处
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,这就解释了这个异常发生的原因。
分享到:
相关推荐
在 docker 容器中运行 hdfs 数据节点 暴露端口 TCP 50010 dfs.datanode.address 数据传输端口 TCP 50020 dfs.datanode.ipc.address ipc 服务器 ...docker run -d --link namenode:namenode hauptmedia/hdfs-datanode
Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如集群中添加新的数据节点,节点与节点之间磁盘大小不一样等等。当hdfs出现不平衡状况的时候,将引发很多问题,比如MR程序无法很好地利用本地...
6.2 数据完整性 6.3 掉线时限参数设置 6.4 服役新数据节点 6.5 退役旧数据节点
HDFS体系结构(NameNode、DataNode详解)
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 ...
HDFS DataNode定义的存储目录不正确或HDFS的存储规划变化时,需要修改DataNode的存储目录,以保障HDFS的正常工作,假定我们现在对应的HDFS数据盘位置为:/hadoop/hdfs/data; 预将数据目录迁移至/data/hadoop/hdfs/...
False ) hdfs_namenode_host - HDFS NameNode 的主机名(默认: localhost ) hdfs_namenode_port - HDFS NameNode 的端口(默认: 8020 ) hdfs_disks - HDFS DataNode 上可用的磁盘列表(默认值: [] ) hdfs_...
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(Hadoop Distributed File System,Hadoop分布式文件系统)是Hadoop中...在HDFS中,数据存储的基本单位是Block,即文件上传到HDFS上之后,都会被切分为Block形式来进行存储,Block最终会落地到DataNode的磁盘上。
HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...
在启动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
windows平台下的HDFS文件浏览器,就像windows管理器一样管理你的hdfs文件系统。现在官网已经停止更新这款软件。具体配置如下: HDFS配置页面及端口http://master:50070 配置HDFS服务器 配置WebHDFS HDFS Explorer...
java操作hadoop之mapreduce计算整数的最大值和最小值实战源码,附带全部所需jar包,欢迎下载一起学习。
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.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...
《Hadoop 2.X HDFS源码剖析》以Hadoop 2.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...
技术背景随着公司业务量越来越大,原来的数据节点已经不能满足其存储数据的需求,需要进行节点的动态扩充<name> dfs.heartbeat.interval
hdfs文件的查看 hdfs fs -cat /文件名