Phoenix的安裝與使用

Phoenix最早是saleforce的一個開源項目,後來成爲Apache基金的頂級項目。

Phoenix是構建在HBase上的一個SQL層,能讓我們用標準的JDBC APIs而不是HBase客戶端APIs來創建表,插入數據和對HBase數據進行查詢。

Phoenix完全使用Java編寫,作爲HBase內嵌的JDBC驅動。Phoenix查詢引擎會將SQL查詢轉換爲一個或多個HBase掃描,並編排執行以生成標準的JDBC結果集。直接使用HBase API、協同處理器與自定義過濾器,對於簡單查詢來說,其性能量級是毫秒,對於百萬級別的行數來說,其性能量級是秒。
HBase的查詢工具有很多,如:Hive、Tez、Impala、Spark SQL、Phoenix等。
Phoenix通過以下方式使我們可以少寫代碼,並且性能比我們自己寫代碼更好:

  1. 將SQL編譯成原生的HBase scans。
  2. 確定scan關鍵字的最佳開始和結束
  3. 讓scan並行執行
  4. ...
  • 下載
    cd /home/hadoop/apps/ 
    wget http://mirrors.hust.edu.cn/apache/phoenix/apache-phoenix-5.0.0-HBase-2.0/bin/apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
  • 解壓
    tar -zxvf apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
  • 重命名
    mv apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz  phoenix-5.0.0-HBase-2.0
  • 拷貝hbase和hadoop配置文件到phoenix
    cp /home/hadoop/apps/hbase/hbase-2.0.4/conf/hbase-site.xml   /home/hadoop/apps/hadoop/hadoop-2.7.7/etc/hadoop/{core-site.xml,hdfs-site.xml}  /home/hadoop/apps/phoenix-5.0.0-HBase-2.0/bin/
  • 拷貝phoenix到其他節點
    cd /home/hadoop/apps/phoenix-5.0.0-HBase-2.0
    scp -r phoenix-5.0.0-HBase-2.0/ hd2:$PWD
    scp -r phoenix-5.0.0-HBase-2.0/ hd3:$PWD
  • 拷貝phoenix的jar包到hbase中
    scp phoenix-5.0.0-HBase-2.0-server.jar phoenix-core-5.0.0-HBase-2.0.jar hd1:/home/hadoop/apps/hbase/hbase-2.0.4/lib/
    scp phoenix-5.0.0-HBase-2.0-server.jar phoenix-core-5.0.0-HBase-2.0.jar hd2:/home/hadoop/apps/hbase/hbase-2.0.4/lib/
    scp phoenix-5.0.0-HBase-2.0-server.jar phoenix-core-5.0.0-HBase-2.0.jar hd3:/home/hadoop/apps/hbase/hbase-2.0.4/lib/
  • 先重啓hbase
    stop-hbase.sh
    start-hbase.sh
  • 再啓動phoenix
bin/sqlline.py hd1:2181

Phoenix的安裝與使用

  • 首次啓動會在hbase中自動生成6張表,在phoenix中也可以看到
    SYSTEM.CATALOG
    SYSTEM.FUNCTION
    SYSTEM.LOG
    SYSTEM.MUTEX
    SYSTEM.SEQUENCE
    SYSTEM.STATS

Phoenix的安裝與使用

  • phoenix常用命令
  • 查看所有表

    !tables      

    Phoenix的安裝與使用

  • 創建表(建完表後hbase中也會自動創建對應的表)
    #創建完的表名和字段名都會自動轉成大寫,如需小寫,需在建表時給表名和字段名前後加雙引號。如下:
     create table "t_test"(
    "id" INTEGER NOT NULL PRIMARY KEY("id"),
    "name" VARCHAR,
    "age" INTEGER
    );

    ###建表後默認表名和字段都是大寫的###
    create table t_test(
    id INTEGER NOT NULL PRIMARY KEY(id),
    name VARCHAR,
    age INTEGER
    );
  • 插入/更新數據

            upsert into "t_test" ("id","name","age") values(1,'zhangsan',23);
            upsert into "t_test" ("id","name","age") values(2,'lisi',35);
            upsert into "t_test" ("id","name","age") values(3,'tianqi',66);
  • 查詢插入的數據
     select * from "t_test";

Phoenix的安裝與使用

  • 刪除數據
  delete from "t_test" where "id" =1;
  • 刪除表

    drop table "t_test";

    以上在phoenix中的DDL和DML操作在hbase對應的表中也會同時觸發,即操作通過phoenix來操作hbase。

  • 退出

    !quit
  • 更多操作
http://phoenix.apache.org/language/index.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章