1. 程式人生 > >快速理解 Phoenix : SQL on HBASE

快速理解 Phoenix : SQL on HBASE

作者:劉旭暉 Raymond 轉載請註明出處

更多雲計算相關專案快速理解文件  http://blog.csdn.net/colorant/article/details/8255910

==是什麼 ==

目標Scope

EasyStandard SQL access on top of HBase

官方定義

A SQL layer over HBase delivered as a client-embedded JDBC drivertargeting low latency queries over HBase data

個人理解

不同於Hive on HBase的方式,Phoenix

Query Plan直接使用HBaseAPI實現,目的是規避MapReduce框架,減少查詢的時間延遲

==架構 ==

PhoenixSQL Query Plan的執行,基本上是通過構建一系列的Hbase scan來完成。

為了儘可能減少資料傳輸,在Region Server使用Coprocessor來儘可能的執行Aggregate相關工作,基本思想是使用RegionObserverPostScannerOpen hook中將RegionScanner替換成支援Aggregation工作的定製化的Scanner,具體的Aggregate操作通過customscan屬性傳遞給

RegionScanner。與基於MapReduce的框架執行Plan的思想比較,基本上就是通過Coprocessor,使用RegionServer自身來在各個節點上執行Aggregation

此外,通過各種定製的FilterHbaseRegionScanner scan過程中,儘早的將不相關的資料過濾掉。

採用JDBC介面和應用程式互動。

==實現 ==

目前支援簡單的表的建立,修改,資料刪減,過濾,檢索等SQL語法,從語法上看,不支援多表操作,本質上應該是由於不支援多表聯合類的操作如各種Join等,所以在Where部分也就不能做多表的比較。

個人認為,由於Coprocessor

Filter自身能力的限制,如果完全不依賴Map Reduce框架,只通過HbaseClient API想要實現複雜的Query操作如多表聯合操作,相對比較困難,或者大量工作需要在客戶端程式碼中實現,效能上可能無法滿足需求。

RoadMap上來看,打算支援Hash Join,要考慮效能的話,我猜測大概的實現思路是把第一次scan的小表的結果以某種方式儲存在記憶體中供第二次Scan時匹配用,那麼應該需要在scan之間保留狀態,不知道這點phoneix具體打算怎麼實現。

此外,Secondary Index也在計劃之中。沒有Secondary Index,顯然在查詢效率方面要大打折扣。

然後,基於HBaseTS Basedversion和不限制qualifier等特性,大概還打算實現一些相對有趣的功能,比如動態column,巢狀資料結構,schema演進等。

適用領域

如果不能找到比較好的辦法來實現Join類操作,多表相關的操作都不能高效實現,那麼應該只能用於簡單的過濾,排序,單表檢索類工作。照官方的說法就是適用於10M-100M行規模的簡單查詢。

不過,考慮到HBase表的設計理念,儘量用冗餘資料空間減少複雜性的思想,實際上可以把相關資料都放在同一個表裡,而不需要為了減少資料冗餘,拆分到多個表中,很大程度上可以規避現階段Phoenix在多表聯合操作方面的能力缺失(當然,所有資料在一個表裡儲存,如果帶來更新操作的負擔和一致性問題,那還是要拆分的)

==相關文獻 ==


相關推薦

快速理解 Phoenix : SQL on HBASE

作者:劉旭暉 Raymond 轉載請註明出處 更多雲計算相關專案快速理解文件  http://blog.csdn.net/colorant/article/details/8255910

Phoenix(SQL On HBase)

1.簡介     Phoenix是一個HBase框架,可以通過SQL的方式來操作HBase。 Phoenix是構建在HBase上的一個SQL層,是內嵌在HBase中的JDBC驅動,能夠讓使用者使用標準的JDBC來操作HBase。 Phoenix使用JAVA語言進行編寫,其查詢

SQL on HBase -- phoenix 之分頁查詢

        最近一個專案中使用了HBase,有一部分實時查詢的需求。HBase本身只有一種排序,即按照rowkey的字典升序來排序資料。然而我們常常會碰到各種各樣的排序需求。         對於簡單的需求(比如專案確定只有某一種特定排序的需求),則可以通過對rowk

Phoenix 實現 SQL On HBase

HBase 是基於 Hadoop 的分散式資料庫,既然是資料庫,增刪改查是必備功能。但不知是何緣故,HBase 提供了一套自己的查詢語言(HBase shell 常用命令),而不是類SQL。這無形中增加了 HBase 的使用成本。那麼問題來了,可否使用 類S

Trafodion成熟的SQL on HBase解決方案

簡介 Trafodion是一個開源Apache專案。它提供了一個成熟的企業級SQL on HBase解決方案。Trafodion的主要設計思想是處理operational型別的工作負載,或者是傳統的OLTP應用。此外,對於需要保證資料一致性,需要標準SQL

Phoenix on HBase

inpu and 增加 src 集群負載 .cn 步長 傳輸 hbase (一)概要 Apache Phoenix是基於BSD許可開源的一個Java中間層,可以讓開發者在Apache HBase上執行SQL查詢。Apache Phoenix主要特性: 嵌入式的JDBC驅

Phoenix的安裝使用與SQL查詢HBase

saving home sum rip sna ima 事務性 timeout exists 一. Phoenix的簡介 1. 什麽是phoenix 現有hbase的查詢工具有很多如:Hive,Tez,Impala,Shark/Spark,Phoenix等。

saprk sql 整合 hbase 通過phoenix 關係對映 jdbc

首先說明遇到的坑 要在phoenxi中建表 , 只有在Phoenix中建表才鞥對映到hbase ,因為spark是通過Phoenix的jdbc 插入資料的  不是吧資料放進hbase而是把資料放進Phoenix 所以在hbase中建表是找不到的 我是通過sparksql插入的 sparks

Phoenix=HBase+SQLHBase插上了翅膀

本期分享專家:張贇—阿里多模型資料庫專家 本期分享主題:Phoenix 基本介紹及二級索引 視訊地址:https://yunqivedio.alicdn.com/od/pnb7E1543455829418.mp4 PPT地址:https://yq.aliyun.com/download/3111

getBoundingClientRect的快速理解

cli 一個 bound 兼容性問題 想要 html 返回 理解 好的 getBoundingClinetRect: 獲取某一個元素相對視窗的位置集合(它是一個方法,返回一個對象集合)   位置集合主要包括 { top, left, right,bottom } 等屬性

快速理解Java中的五種單例模式

嵌套類 ati class 由於 aop 適合 singleton 重復 code 解法一:只適合單線程環境(不好) package test; /** * @author xiaoping * */ public class Singleton { pri

學一點 mysql 雙機異地熱備份----快速理解mysql主從,主主備份原理及實踐

server counter ror 位置 正在 大型 主循環 備份 配置詳解 雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫數據一致。 這樣做的好處多。 1. 可以做災備,其中一個壞了可

快速理解VirtualBox的四種網絡連接方式

又是 dhcp nat guest 參考資料 virt 簡單的 網絡基礎知識 基礎知識 VirtualBox中有4中網絡連接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三種,其實他跟

SQL On Hadoop 設計的一個基本原則是:將計算任務移動到數據所在的節點而不是反過來

介紹 計算性能 pan 之間 處理 arr 應用程序 sum span 3.1 數據本地化 SQL On Hadoop 設計的一個基本原則是:將計算任務移動到數據所在的節點而不是反過來。這主要出於網絡優化的目的,因為數據分布在不同的節點,如果移動數據那麽將會產生大量的低效的

37.Azure創建SQL On WinSrv的虛擬機(上)

雲計算 雲平臺 如果按照傳統的方式準備一臺SQL服務器,肯定是需要先安裝好Windows Server系統,然後安裝SQL所需的服務器角色和功能,再安裝SQL Server對吧,這樣的安裝步驟繁瑣又復雜,對於一個不熟悉系統的人來說準備這樣一套環境就相當費勁了,那麽在Azure上準備這樣一臺SQL虛擬機

SQL on&where&having

完成 多表 情況 單表 一個表 pac cin 減少 決定 on、where、having這三個都可以加條件的子句中,on是最先執行,where次之,having最後。有時候如果這先後順序不影響中間結果的話,那最終結果是相同的。但因為on是先把不符合條件的記錄過濾後才進

Severless SQL on OSS 實驗(DataLakeAnalytics on OSS)

status sans 用戶名 ops adding pad hnu bucket join 摘要: 數據存儲在OSS後,可以有多種方式查詢分析OSS數據,如自建Spark/Presto/Impala(阿裏雲EMR以及Hadoop社區官方已支持OSS), 使用MaxComp

快速理解編碼,unicode與utf-8

logs 聯網 長度 unicode 為什麽 互聯網 什麽 描述 com 1.為什麽編碼,因為cpu只認識數字2.ASCII 一個字符共占7位,用一個字節表示,共128個字符3.那麽ASCII浪費了最高位多可惜,出現了ISO-8859-1,一個字節,256個字符,很多協議的