hdfs本身是不支持文件随机插入数据。那么hbase中随机写入记录,在hdfs中是怎么实现的呢?

可能说得不清楚,更明确的情况是修改数据。hdfs是不支持对文件中部分数据进行修改的。但hbase需要对记录进行增删改查操作,那么hbase需要修改某个…
关注者
116
被浏览
26,911
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

这里要提到HFile的存储格式,每一个单元格或者KeyValue在HFile中的格式如下:

row length + row key + family length + column family + column qualifier + timestamp + key type

对于更新操作来说,会重新插入一条新的数据而不是在原来数据上修改。新的数据的timestamp会大于老的数据,这样读取的时候,判断时间戳就可以取出最新的数据了。

对于删除操作来说,会插入一条新的数据,但是key type会标记成Delete状态。同样,读取的时候如果取到了是Delete,而且时间是最新的,那么这条记录肯定是被删掉了。

所以这种设计模式也是合并操作产生的原因。但是需要注意的是,只有大合并操作才会drop掉脏数据(老数据)