0

問題があります。いくつかの情報は次のとおりです。

ノード: 3 ノード、ただし構成は 2 リージョン サーバー
OS: Centos6.3
Apache Hadoop2.7.1
Apache Hbase0.98.12

私のhadoopとhbaseはlzo圧縮をサポートし、同時にsnappy圧縮の成功をサポートします。lzo圧縮を使用するhbaseテーブルがあり、snappy圧縮を使用する他のhbaseテーブルがあります。このテーブルに50個のリコーダーデータを挿入します。OK、挿入は問題ありません。しかし、Java APIを使用してこのテーブルをスキャンすると、リージョンサーバーの1つが死んでいます。

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 ファイルが Normal になるためです。ご回答ありがとうございます。

4

2 に答える 2

0

コンテンツの最後の行のリターンがありません。EOF を制御するには、次のような条件を使用する必要があります。

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