1、hbase对数据的管理机制
1.1、hbase中的表很大---bigtable,都是分布式存储在集群的各个regionserver上
1.2、分布式存储时,需要对表进行切分,首先是按行切分成若干个hregion
1.3、表的每一个hregion都会被一个regionserver所管理
1.4、每一个hregion随着插入数据的增多,一旦达到一个阈值,会被regionserver分裂成两个
1.5、在一个hregion内部还会被按照列族切分成若干个store单元
1.6、每一个store又会被切分成若干个store file(HFile)存储到hdfs文件系统中
1.7、每一个store对象中会维护一个内存缓存 memstore,用户查询数据时首先会去memstore中进行命中
1.8、客户端往表中插入数据,首先会在hlog日志中进行记录,然后定期进行flush合并
2、hbase寻址机制
文件:
.META.:记录表名、hregion起始行键(rowkey)、RS主机名等信息
-ROOT-:记录.META.的region的起始行健等信息(位置信息记录在zookeepr中)
寻址过程:client -> -ROOT- -> .META. -> RS ->region -> rowkey
缓存机制:通过寻址过程找到rowkey后缓存到客户端本地,以便下次查询增快速度
3、行键设计技巧
问题描述:在查询符合某种描述的用户时,例如:查出姓“张”的所有用户或者根据年龄范围查询,hbase不像一般的RDBMS可以随便建立索引(分布式建立二级索引不是很容易,非常复杂),无法对rowkey以外的字段建立索引
行键设计:通过上面的问题引出做行键设计的必要,在做表设计时可以将需要经常过滤的关键字、重要的信息放在行键里面,例如:rk00001-zhang-18-beijing
注意:
行键支持64KB大小
hbase自动对行键按字典排序,所以设计时尽量让连续数据排在一起,以便范围查询时可提高效率。
4、hbase二级索引
4.1、用solr对hbase中的信息建立全文索引
4.2、使用coprocessor机制