hbase的优化

1、rowkey设计有哪三原则?

  ①长度原则:rowkey是二进制码流。10-100个字节。

  ②散列原则:rowkey是按照字典序存储的。利用该规则,将数据均衡的分到不同的regionserver上。

  ③唯一原则  :rowkey是查询数据的索引,所以必须要保证唯一性。

2、如何解决热点问题?

    加盐:在rowkey前加上随机数。读不可预测。

    哈希:hash会使同一个rowkey使用固定的前缀加盐,读可预测。

    反转:如反转手机号或者时间戳。可以使得数据分布较为均匀。但此时行键连续性最低,如果对行键连续性较高则不适合。

3、hbase的compact的分类和作用?

    minor compact:在刷写文件达到一定数量之后,进行文件的合并操作。

    major compact:有个CompactionChecker线程,进行周期轮询。默认为7天,会将多个storefile进行合并,同时会将超过版本的,标记为删除的,过期的数据进行删除操作。

4、协处理器 Coprocessor

    为表埋钩子代码,当条件符合时自动触发钩子。可以利用协处理器简历hbase的二级索引。创建一个类继承观察类,重写preput方法,在插入数据到本表前会先执行该方法。打包上传到hdfs,利用hbase shell命令加载该协处理器到表中

5、phoenix构建二级索引

    phoenix是一个HBase的开源SQL引擎。

优点:①支持sql查询Hbase,自动转换sql为最佳并行scan语句

          ②将where子句交给过滤器处理,将聚合查询交给协处理器处理

            ③支持直接创建二级索引来提升非主键的查询性能

            ④跳过扫描过滤器来优化in、like、or查询

            ⑤优化写操作

缺点:①不支持事务和复杂查询

            ②有着严格的版本对应关系

6、hbase的高表与宽表的选择?

高表:①查询性能更好。因为一行数据更少,所以查询缓存BlockCache能缓存更多的行,以行数为单位的吞吐量更高。

        ②分片能力更好。因为hbase只能以行分片。

宽表:①元数据开销小

           ②事务性更小

           ③数据压缩比更好

7、hbase的布隆过滤器?

    布隆过滤器是HBase系统中的高级功能,它能够减少特定访问模式下的查询时间。默认为关闭状态。

布隆过滤器类型

   使用过滤器,如果扫描文件块不包含该行数据,它会明确答复。如果包含该行数据,答复可能有误,通常该错误率设置为1%。意味着过滤器中关于一个文件包含一个请求行的报告中有1%是错误的。但块加载的数量大大减少了,可以提升读取效率。

你可能感兴趣的:(hbase的优化)