You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Brahma Reddy Battula (JIRA)" <ji...@apache.org> on 2015/11/10 08:27:10 UTC

[jira] [Commented] (HBASE-11625) Reading datablock throws "Invalid HFile block magic" and can not switch to hdfs checksum

    [ https://issues.apache.org/jira/browse/HBASE-11625?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14998095#comment-14998095 ] 

Brahma Reddy Battula commented on HBASE-11625:
----------------------------------------------

[~apurtell]/[~syuanjiang]/[~ndimiduk]/[~qian wang]/[~ram_krish]

Any update on this ..? Same issue we faced in production environment and we are using hbase1.0 and hadoop2.6.

Hfile replcation is 2,one good replica and one corrupted replica. Noticed following.

 *HDFS client:*  When using hdfs connection client reads HFile A to Bad DataNode (where data is corrupted), the DataNode reported checksum error,
hdfs client attempts to read data from another DataNode, and read success.
---DFSClient with hdfs check sum

 *RegionServer:*  RegionServer closing the hdfs clients, no check sum hdfs enabled client reads HFile A.
---then use DFSClient without hdfs check sum.

Please correct me If I am wrong..

Bytheway following is the trace. *Major compaction failed.* 
{noformat}
2015-09-16 13:03:07,307 | INFO  | regionserver21302-smallCompactions-1441158778210 | Starting compaction of 6 file(s) in d of TB_HTTP_201509,820,1441041221494.1c80ce3eddc7b463b1f9525d2f440798. into tmpdir=hdfs://hacluster/hbase/data/default/TB_HTTP_201509/1c80ce3eddc7b463b1f9525d2f440798/.tmp, totalSize=22.6 M | org.apache.hadoop.hbase.regionserver.HStore.compact(HStore.java:1077)
2015-09-16 13:03:07,311 | ERROR | regionserver21302-smallCompactions-1441158778210 | Compaction failed Request = regionName=TB_HTTP_201509,820,1441041221494.1c80ce3eddc7b463b1f9525d2f440798., storeName=d, fileCount=6, fileSize=22.6 M (3.7 M, 3.8 M, 3.8 M, 3.8 M, 3.8 M, 3.8 M), priority=-1701, time=10101672953052926 | org.apache.hadoop.hbase.regionserver.CompactSplitThread$CompactionRunner.run(CompactSplitThread.java:510)
java.io.IOException: Could not seek StoreFileScanner[HFileScanner for reader reader=hdfs://hacluster/hbase/data/default/TB_HTTP_201509/1c80ce3eddc7b463b1f9525d2f440798/d/63cc160d266748599d338b7c9e390a23, compression=none, cacheConf=CacheConfig:enabled [cacheDataOnRead=true] [cacheDataOnWrite=false] [cacheIndexesOnWrite=false] [cacheBloomsOnWrite=false] [cacheEvictOnClose=false] [cacheCompressed=false][prefetchOnOpen=false], firstKey=8200005291_460000132556183_9223372035413272744_1919/d:aa/1441530258037/Put, lastKey=8249864621_460020161249953_9223372035413273715_6377/d:di/1441530155261/Put, avgKeyLen=65, avgValueLen=5, entries=319088, length=3964840, cur=null] to key /d:/LATEST_TIMESTAMP/DeleteFamily/vlen=0/mvcc=0
	at org.apache.hadoop.hbase.regionserver.StoreFileScanner.seek(StoreFileScanner.java:164)
	at org.apache.hadoop.hbase.regionserver.StoreScanner.seekScanners(StoreScanner.java:317)
	at org.apache.hadoop.hbase.regionserver.StoreScanner.<init>(StoreScanner.java:240)
	at org.apache.hadoop.hbase.regionserver.StoreScanner.<init>(StoreScanner.java:202)
	at org.apache.hadoop.hbase.regionserver.compactions.Compactor.createScanner(Compactor.java:257)
	at org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor.compact(DefaultCompactor.java:65)
	at org.apache.hadoop.hbase.regionserver.DefaultStoreEngine$DefaultCompactionContext.compact(DefaultStoreEngine.java:109)
	at org.apache.hadoop.hbase.regionserver.HStore.compact(HStore.java:1086)
	at org.apache.hadoop.hbase.regionserver.HRegion.compact(HRegion.java:1480)
	at org.apache.hadoop.hbase.regionserver.CompactSplitThread$CompactionRunner.run(CompactSplitThread.java:495)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Invalid HFile block magic: \x00\x00\x00\x00\x00\x00\x00\x00
	at org.apache.hadoop.hbase.io.hfile.BlockType.parse(BlockType.java:154)
	at org.apache.hadoop.hbase.io.hfile.BlockType.read(BlockType.java:165)
	at org.apache.hadoop.hbase.io.hfile.HFileBlock.<init>(HFileBlock.java:239)
	at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderV2.readBlockDataInternal(HFileBlock.java:1486)
	at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderV2.readBlockData(HFileBlock.java:1314)
	at org.apache.hadoop.hbase.io.hfile.HFileReaderV2.readBlock(HFileReaderV2.java:392)
	at org.apache.hadoop.hbase.io.hfile.HFileReaderV2$EncodedScannerV2.seekTo(HFileReaderV2.java:1090)
	at org.apache.hadoop.hbase.regionserver.StoreFileScanner.seekAtOrAfter(StoreFileScanner.java:244)
	at org.apache.hadoop.hbase.regionserver.StoreFileScanner.seek(StoreFileScanner.java:152)
	... 12 more
{noformat}

> Reading datablock throws "Invalid HFile block magic" and can not switch to hdfs checksum 
> -----------------------------------------------------------------------------------------
>
>                 Key: HBASE-11625
>                 URL: https://issues.apache.org/jira/browse/HBASE-11625
>             Project: HBase
>          Issue Type: Bug
>          Components: HFile
>    Affects Versions: 0.94.21, 0.98.4, 0.98.5
>            Reporter: qian wang
>         Attachments: 2711de1fdf73419d9f8afc6a8b86ce64.gz
>
>
> when using hbase checksum,call readBlockDataInternal() in hfileblock.java, it could happen file corruption but it only can switch to hdfs checksum inputstream till validateBlockChecksum(). If the datablock's header corrupted when b = new HFileBlock(),it throws the exception "Invalid HFile block magic" and the rpc call fail



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)