hbase lzo table 扫描导致区域服务器关闭

hbase lzo table scan cause regionserver shutdown

我有一个问题,一些信息如下:

nodes : 3 node , but only configurtion 2 regionserver
os:美分os6.3
Apache Hadoop2.7.1
Apache Hbase0.98.12

我的 hadoop 和 hbase 支持 lzo 压缩,同时支持 snappy 压缩成功,我有一个 hbase table 使用 lzo 压缩,还有其他 hbase table 使用 snappy 压缩,我插入 50将数据重新编码到此 table 中,好的,插入没问题,但是当我使用 java api 扫描此 table 时,其中一个区域服务器已死。

我检查了 hbase 日志,但没有错误或异常,但是我检查了 hadoop 日志,我发现 一些例外:

java.io.IOException: Premature EOF from inputStream
    at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:201)
    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:472)
    at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receiveBlock(BlockReceiver.java:849)
    at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:804)
    at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.opWriteBlock(Receiver.java:137)
    at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.processOp(Receiver.java:74)
    at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:251)


我不知道为什么只扫描hbase抛出异常table,因为我执行MR作业读取lzo文件是正常的,谢谢你的回答!

您内容的最后一行缺少 return。你必须使用这样的条件来控制 EOF:

while (line = mycontent.readLine()) != null)
{
...
...
}

好的,我终于找到了答案,令人难以置信,通过 Hbase gc 日志,我看到一个很长的完整 gc 提示,我的 hbase 的堆大小默认为 1 gb,所以当我增加它时可能会出现问题到 4 GB 堆,我使用大量压缩是正常的,所以请记住这一点!