运行'hdfs balancer',我确实看到它显示了安装,过度利用和未充分利用的节点的机架拓扑,它说“需要移动5 TB以使群集平衡”和“决定从10.150移动10 GB字节.11.24:50010到10.150.11.164:50010“
然后我看到了这个错误,
WARN balancer.Balancer:调度程序线程失败 java.lang.NullPointerException at org.apache.hadoop.hdfs.server.balancer.Balancer.isGoodBlockCandidate(Balancer.java:1233) 在 org.apache.hadoop.hdfs.server.balancer.Balancer.access $ 400(Balancer.java:183) 在 org.apache.hadoop.hdfs.server.balancer.Balancer $ Source.isGoodBlockCandidate(Balancer.java:686) 在 org.apache.hadoop.hdfs.server.balancer.Balancer $ Source.getBlockList(Balancer.java:674) 在 org.apache.hadoop.hdfs.server.balancer.Balancer $ Source.dispatchBlocks(Balancer.java:776) 在 org.apache.hadoop.hdfs.server.balancer.Balancer $ Source.access $ 1600(Balancer.java:607) 在 org.apache.hadoop.hdfs.server.balancer.Balancer $来源$ BlockMoveDispatcher.run(Balancer.java:614) 在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) 在java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:744)
那么,
5次迭代没有移动任何块。退出...
警告hdfs.DFSClient:DataStreamer异常 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): /system/balancer.id上没有租约:文件不存在。持有人 DFSClient_NONMAPREDUCE_-201468433_1没有任何打开的文件。在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkLease(FSNamesystem.java:2937) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.analyzeFileState(FSNamesystem.java:2757) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2665) 在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:569) 在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:440) 在 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 在 org.apache.hadoop.ipc.ProtobufRpcEngine $服务器$ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
和namenode日志会显示这个,
WARN org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:hdfs(auth:SIMPLE) 原因:org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException:否 在/system/balancer.id上租用:文件不存在。持有人 DFSClient_NONMAPREDUCE_-201468433_1没有任何打开的文件。
INFO org.apache.hadoop.ipc.Server:802020上的IPC服务器处理程序118, 从org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock调用 10.150.11.126:56490调用#71重试#0:错误:org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException:无租约 on /system/balancer.id:文件不存在。持有人 DFSClient_NONMAPREDUCE_-201468433_1没有任何打开的文件。
我搜索并找到了一些关于重复平衡器进程的讨论,但我在我们的集群中找不到这个问题。有没有其他想法?我们正在使用cdh5.0.1
答案 0 :(得分:0)
在CDH中,您应该有一个运行HDFS平衡器服务的节点。这就是阻止命令行使用hdfs balancer。
见这里: