3

运行“hdfs balancer”,我确实看到它显示已安装的机架拓扑、过度使用和未充分使用的节点,它说“需要移动 5 TB 以使集群平衡”和“决定从 10.150.11.24 移动 10 GB 字节: 50010 到 10.150.11.164:50010"

然后我看到这个错误,

WARN balancer.Balancer: Dispatcher thread failed java.lang.NullPointerException at org.apache.hadoop.hdfs.server.balancer.Balancer.isGoodBlockCandidate(Balancer.java:1233) at org.apache.hadoop.hdfs.server.balancer.Balancer .access$400(Balancer.java:183) at org.apache.hadoop.hdfs.server.balancer.Balancer$Source.isGoodBlockCandidate(Balancer.java:686) at org.apache.hadoop.hdfs.server.balancer.Balancer$ Source.getBlockList(Balancer.java:674) at org.apache.hadoop.hdfs.server.balancer.Balancer$Source.dispatchBlocks(Balancer.java:776) at org.apache.hadoop.hdfs.server.balancer.Balancer$ Source.access$1600(Balancer.java:607) at org.apache.hadoop.hdfs.server.balancer.Balancer$Source$BlockMoveDispatcher.run(Balancer.java:614) at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:471) 在 java。util.concurrent.FutureTask.run(FutureTask.java:262) 在 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 次迭代没有移动任何块。退出...

WARN hdfs.DFSClient: DataStreamer Exception 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) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:569) at org.apache.hadoop.hdfs .protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:440) 在 org.apache。

namenode 日志会显示这一点,

警告 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:8020 上的 IPC 服务器处理程序 118,从 10.150.11.126:56490 调用 org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock Call#71 Retry#0:错误:org.apache .hadoop.hdfs.server.namenode.LeaseExpiredException:/system/balancer.id 上没有租约:文件不存在。持有人 DFSClient_NONMAPREDUCE_-201468433_1 没有任何打开的文件。

我搜索并发现了一些关于重复平衡器进程的讨论,但我在我们的集群中找不到这个问题。有人有其他想法吗?我们正在使用 cdh5.0.1

4

1 回答 1

0

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

看这里:

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

于 2014-10-09T12:00:31.430 回答