我是Hbase.Hbase的新手,非常适合对表进行随机更新(放置或删除),但无法理解hbase如何执行该操作。由于hbase使用HDFS进行存储,因此无法更新HDFS中的任何内容。 Hbase使用memstore更新记录并首先将任何编辑写入memstore.So MemStore包含按排序键顺序的任意数量的更新行。当它将数据转储到磁盘到hfile时,此hfile是否与其他hfiles进行全局排序
转储所有hfile后,hfile在HDFS中复制。对于WAL编辑日志的问题.WAL日志文件也在HDFS中复制或不复制。对于每次更新,我们都会将更新复制到HDFS。
答案 0 :(得分:5)
这些博文可能会对您有所帮助 http://blog.cloudera.com/blog/2012/06/hbase-io-hfile-input-output/ http://blog.cloudera.com/blog/2012/06/hbase-write-path/
但基本上,你发送一个put(key,value)写入wal(用于恢复)和memstore。 当memstore达到阈值时,memstore以排序顺序写入磁盘(hfile)。 过了一会儿,你在磁盘上有多个hfiles。既然您知道每个文件都有已排序的内容,您可以执行(排序)合并来查询您的数据。
WAL仅在发生崩溃时使用,如果您的数据在memstore中,并且机器崩溃了您拥有的唯一副本在WAL中。刷新数据后,可以删除包含memstore数据的WAL。