如下是精彩視頻內容整理:html
Hbase上的分析從使用的方式上來分類能夠分爲NATIVE和SQL兩類,而兩者均存在小數量簡單分析和大數據量複雜分析兩種場景。但不管在NATIVE和SQL上作小數據量分析或者大數據量分析均需解決HBASE的一些根本問題,好比HBASE表數據熱點問題,易用性以及適用更多場景。網絡
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的實現方案不太成熟,故不推薦使用。工具