085 HBase的二級索引,以及phoenix的安裝(需再做一次)


一:問題由來

1.舉例

  有A列與B列,分別是年齡與姓名。

  如果想通過年齡查詢姓名。

  正常的檢索是通過rowkey進行檢索。

    根據年齡查詢rowkey,然后根據rowkey進行查找姓名。

    這樣的效率不高,因為要兩次scan。

 

2.建議有一張索引表。

 

二:HBase的二級索引

1.講解

  rowkey是uid+ts
    11111_20161126111111:

    這個rowkey方便查詢某一uid的某一個時間段內的數據

  問題:
    查詢某一時間段內所有用戶的數據:按照時間

  索引表

   rowkey:ts+uid 20161126111111—111111

   其他列:info:uid

   值是uid+ts,因為這個是原表的rowkey。

  
檢索流程:

    從索引表中根據時間段來查詢源表rowkey
    根據rowkey來查詢源表

 

2.還有的問題

  如何保持索引表與原表的同步問題。

  好的方式是:編寫協處理器,將客戶端實現的邏輯代碼放到服務端。

  同時,可以使用其他的框架,主要有solr,phoenix。elassearch。

 

3.協處理器

  observer處理器:觀察者,類似於觸發器

  endpoint類:終端類,類似於儲存過程。

 

4.hbase自帶的協處理器

  這個在hbase:meta中

  可以通過desc 'hbase:meta'進行查看

  是coprocessor$1。

 

三:phoenix的安裝

1.上傳源碼包

  因為對應的hbase0.98.6沒有對應的phoenix,所以需要自己進行編譯。

  

 

2.解壓到modules文件夾下

  tar -zxvf phoenix-4.2.2-src.tar.gz -C /etc/opt/modules/

 

3.修改pom.xml文件

  有一個問題,將所有的hadoop-two.version 變量都換成2.5.0

  <hbase.version>0.98.6-hadoop2</hbase.version>
  <hadoop-two.version>2.5.0</hadoop-two.version>

  

 

4.進入主目錄

 

5.編譯

  mvn clean package -DskipTests

  ----------------------------------------------------(以下需要重新編譯,重新做)------------------------------------------------------------

 

6.查找編譯好的包

  Phoenix_home/Phoenix-assembly/target/phoenix-4.2.2.tar.gz

 

7.安裝phoenix

  啟動的時候,后面跟的是zookeeper地址。

 

8.phoenix映射原有的表

  執行的語句,在phoenix中。

  hbase對於大小寫敏感,然后需要將phoenix中的語句進行雙引號引起來。

  

 

9.看效果

  可以在phoenix中查詢映射的表。

  select * from "s1";

  將會發現,這里的數據與hbase中的數據相同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM