缘由:新集群(cdh)搭建好,打算测试一下新集群的hdfs性能,因而使用hdfs自带的测试 hadoop-test-2.6.0-mr1-cdh5.6.1.jar,计划产生10T的数据量进行测试,hadoop jar hadoop-test-2.6.0-mr1-cdh5.6.1.jar TestDFSIO -write -nrFiles 10 -fileSize 10000000 -resFile /tmp/TestDFSIO_results.log;java
因为时间问题,在数据量产生到2T多的时候,集群机器直接关机了,等再次开机时,hdfs启动上有两个datanode起不来,包以下错:node
ERROR DataNode
laydca10:1004:DataXceiver error processing WRITE_BLOCK operation src: /192.168.1.150:33090 dst: /192.168.1.151:1004
java.io.IOException: Premature EOF from inputStream
at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:203)
at org.apache.hadoop.hdfs.protocol.datatransfer.PacketReceiver.doReadFully(PacketReceiver.java:213)
at org.apache.hadoop.hdfs.protocol.datatransfer.PacketReceiver.doRead(PacketReceiver.java:134)
at org.apache.hadoop.hdfs.protocol.datatransfer.PacketReceiver.receiveNextPacket(PacketReceiver.java:109)
at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receivePacket(BlockReceiver.java:501)
at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receiveBlock(BlockReceiver.java:901)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:808)
at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.opWriteBlock(Receiver.java:169)
at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.processOp(Receiver.java:106)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:246)
at java.lang.Thread.run(Thread.java:748)apache
,后来检查发现,启动不了的这两台datanode下存在几百GB的数据没删除,而后把两台机器上的datanode角色删除,而后把这两台datanode下的几百GB的数据删除,从新添加这两台机器上的datanode角色,发现仍是启动不了;再查看日志发现192.168.1.150和192.168.1.151上的yarn下面有几百MB的数据,怀疑多是因为数据已经删除,可是yarn中的任务注册信息还存在,致使的错误;而后把150和151上的nodemanager角色删除,而后把150和151上的yarn下的数据所有清空,而后从新添加这两个nodemanager角色,在重启yarn和hdfs,hdfs的全部节点就均可以正常启动了。oop