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