以下是精彩视频内容整理:
HBase上的SQL&分析
Hbase上的分析从使用的方式上来分类可以分为NATIVE和SQL两类,而二者均存在小数量简单分析和大数据量复杂分析两种场景。但无论在NATIVE和SQL上做小数据量分析或者大数据量分析均需解决HBASE的一些根本问题,比如HBASE表数据热点问题,易用性以及适用更多场景。
SQL ON HBASE方案:ALI-PHOENIX
HBase上的SQL层
HBASE上的SQL层Phoenix 被大家更多使用的一个特性是二级索引。要使用Phoenix首先需要了解它分为Client端和server端,server端是以一个jar包的形式部署在HBASE的内部。server端对meta表的操作和二级索引的读写等一系列操作都是通过HBASE的ZOOKEEPER完成的。
我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。
二级索引
更为大家关注的是Phoenix的二级索引。目前Phoenix的二级索引主要被大家使用的是GLOBAL INDEX和LOCAL INDEX。GLOBAL INDEX目前为止使用场景比LOCAL INDEX更为广泛,它实质上是一张HBASE表,即把一张倒开索引单独存到另一张HBASE表中。由于这种设计的特性使得它更多的使用与写少多读的场景。当然由于GLOBAL INDEX是一张单独的表所以它可以使用一些主表的特性,比如可以使用加盐,指定压缩等特性。而LOCAL INDEX是在元数据表中多加了一个列数去存储的。由于LOCAL INDEX和元数据表是存在一张表中,故它更多的适用于写多读少的场景中,并且该特性使得主表的数据量不能过大。GLOBAL INDEX和LOCAL INDEX相比LOCAL INDEX的网络开销比较小,故当索引表数据量适量的情况下LOCAL INDEX的性能更高。
GLOBAL INDEX和LOCAL INDEX的元数据均由Phoenix管理,而Phoenix的单独管理着一套元数据信息,这些元数据信息均存在SYSTEM.CATALOG的HBASE表中。目前索引创建支持同步和异步两种方式同步索引数据,同步创建索引的意思是若当前的表有数据那么创建索引的过程就是一个同步索引数据的一个过程,它会把所有的主表的数据翻译成索引数据,全部同步完成以后的再将索引表的状态置成目标状态,这样一个过程称之为同步创建索引。异步创建索引主要是针对数据量大的场景,先执行create index创建索引表相关的元数据,再通过MR同步索引数据,该过程称之为异步创建索引。目前为止Phoenix4.12支持了检查主表和索引表数据一致工具。由于前面所说一些列限制,就导致Phoenix创建所以的时候不能超过一定数量,目前索引个数默认不建议超过10个。目前为止LOCAL INDEX的实现方案不太成熟,故不推荐使用。
转载于:https://my.oschina.net/u/3611008/blog/1616181