赞
踩
之前在docker重新搭建了hadoop,过了一段时间重新使用的时候,发现高可用的两个NameNode一直都是StandBy,然后强制一个hadoop dfsadmin -safemode leave退出Safe Mode。结果呢,发现竟然退出不了。于是查看namenode日志,发现如下错误
20/04/27 03:25:12 WARN namenode.NameNodeResourceChecker: Space available on volume 'overlay' is 0, which is below the configured reserved amount 104857600
20/04/27 03:25:12 INFO ipc.Server: IPC Server handler 4 on 9000, call Call#2409 Retry#0 org.apache.hadoop.ha.HAServiceProtocol.monitorHealth from 172.25.0.20:35394
org.apache.hadoop.ha.HealthCheckFailedException: The NameNode has no resources available
at org.apache.hadoop.hdfs.server.namenode.NameNode.monitorHealth(NameNode.java:1712)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.monitorHealth(NameNodeRpcServer.java:1614)
at org.apache.hadoop.ha.protocolPB.HAServiceProtocolServerSideTranslatorPB.monitorHealth(HAServiceProtocolServerSideTranslatorPB.java:75)
at org.apache.hadoop.ha.proto.HAServiceProtocolProtos$HAServiceProtocolService$2.callBlockingMethod(HAServiceProtocolProtos.java:4458)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:447)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:989)
at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:850)
at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:793)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1844)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2489)
显示了资源不足
那我查看一下硬盘:
df
这。。。。。。怎么可能哦
那么问题就出来了,HDFS处于Safe Mode主要是因为磁盘副本达不到比例,blocks达不到我们配置的要求,就想要出于安全模式来复制
而这时候我们偏偏处于资源不足的情况,那么也就是说,副本永远完成不了复制,就会出现那样的情况,即使强制退出,也会出现磁盘分配不足,导致副本没有完成复制,从而又处于安全模式了
那没办法,直接给docker扩容咯。
再重新启动试试看
终于,原来处于Safe Mode只能永远处于查看而不能修改HDFS,比如put操作等等,现在可以了吧
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。