CDH5 hdfs平衡器错误

时间:2014-08-19 23:04:31

标签: hadoop cloudera cloudera-cdh

运行'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

1 个答案:

答案 0 :(得分:0)

在CDH中,您应该有一个运行HDFS平衡器服务的节点。这就是阻止命令行使用hdfs balancer。

见这里:

http://community.cloudera.com/t5/Storage-Random-Access-HDFS/Running-HDFS-Balancer-fail-report-namenode-LeaseExpiredException/td-p/14052