0

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

节点:3 个节点,但仅配置 2 个区域服务器
操作系统:Centos6.3
Apache Hadoop2.7.1
Apache Hbase0.98.12

我的hadoop和hbase支持lzo压缩,同时支持snappy压缩成功,我有一个使用lzo压缩的hbase表,还有其他使用snappy压缩的hbase表,我在这个表中插入50个recoder数据,好的,插入没问题,但是当我使用 java api 扫描这个表时,其中一个 regionserver 已经死了。

我检查 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 表时抛出异常,因为我执行 MR 作业读取 lzo 文件是正常的,感谢您的回答!

4

2 回答 2

0

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

while (line = mycontent.readLine()) != null)
{
...
...
}
于 2015-12-31T13:30:49.413 回答
0

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

于 2016-01-06T05:39:07.260 回答