This is probably the most comprehensible and complete articles about how HBase is storing data:
Hadoop comes with a SequenceFile file format that you can use to append your key/value pairs but due to the hdfs append-only capability, the file format cannot allow modification or removal of an inserted value. […]
To help you solve this problem Hadoop has another file format, called MapFile, an extension of the SequenceFile. The MapFile, in reality, is a directory that contains two SequenceFiles: the data file “/data” and the index file “/index”. The MapFile allows you to append sorted key/value pairs and every N keys (where N is a configurable interval) it stores the key and the offset in the index.
Original title and link: HBase HFile Explained ( ©myNoSQL)