序言
最近项目组要为客户提供一个基于HBase和ElasticSearch的大数据存储搜索解决方案,提供HBase + ElasticSearch的标准解决方案样例,包括数据写入以及查询。以下简称ES。
需求分析
HBase的查询实现只提供两种方式:
1、按指定RowKey获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get)
2、按指定的条件获取一批记录,scan方法(org.apache.hadoop.hbase.client.Scan)
用好HBase的第一步是要将rowkey设计好。大数据量查询最好从rowkey入手,ColumnValueFilter的速度是很慢的,HBase查询速度还是要依靠rowkey,所以根据业务逻辑把rowkey设计好,之后所有的查询都通过rowkey,是会非常快。 批量查询最好是用 scan的startkey endkey来做查询条件。
HBase在0.92之后引入了coprocessors,提供了一系列的钩子,让我们能够轻易实现访问控制和二级索引的特性。
当前平台内没有对HBase + ES的解决方案,需要给出一个能够指导用户使用HBase和ES组件的解决方案。
目前可能的需求场景如下:
- 批量索引:HBase上已有大量数据,需要在ES上建立索引;
- 增量索引:HBase上已有大量数据,提供HBase的rowkey,实现对ES的增量索引;