HBase分享会议笔记
今天参加了一个关于HBase的分享,有一些内容是之前的知识的补充。
之前关于Hadoop家族,包括HBase的内容,可以参考:http://www.cnblogs.com/charlesblc/p/6014158.html
HBase是三维存储和索引 (http://ronxin999.blog.163.com/blog/static/4221792020130109202973/)
hbase所谓的三维有序存储的三维是指:rowkey(行主键),column key(columnFamily+qualifier),timestamp(时间戳)三部分组成的三维有序存储。
rowkey
rowkey是唯一能进行scan操作的。
column key
column key是第二维,数据按rowkey字典排序后,如果rowkey相同,则是根据column key来排序的,也是按字典排序。
我们在设计table的时候要学会利用这一点。比如我们的收件箱。我们有时候需要按主题排序,那我们就可以把主题这设置为我们的column key,即设计为columnFamily+主题.,这样的设计。
timestamp
timestamp 时间戳,是第三维,这是个按降序排序的,即最新的数据排在最前面。这个就没有什么说的了。网上其他的博客也提到比较多。
HBase所在的层次要了解。
写的顺序,要了解:首先是写WAL,相当于Mysql的binlog;然后数据写Memstore,当Memstore满了之后进行Dump到HFile;注意Memstore有多份,当一份写满了,新开一个Memstore,同时旧的dump到File? (也可能不像分享里面说的,其实不开新的Memstore;而是每个region的列族都有单独的memstore对象但实际上共用一块内存池?)
分享的应用是把HBase 和 ES(ElasticSearch) 结合起来的。HBase作为底层存储,ES作为索引的组织和检索框架。
再开一篇文章讨论 ES和Solr的关系和区别。