Phoenix安装及其使用

一、Phoenix简介

Phoenix是一个HBase的开源SQL引擎。你可以使用标准的JDBC API代替HBase客户端API来创建表,插入数据,查询你的HBase数据。
Phoenix是构建在HBase之上的SQL引擎。你也许会存在“Phoenix是否会降低HBase的效率?”或者“Phoenix效率是否很低?”这样的疑虑,事实上并不会,Phoenix通过以下方式实现了比你自己手写的方式相同或者可能是更好的性能(更不用说可以少写了很多代码):

编译你的SQL查询为原生HBase的scan语句
检测scan语句最佳的开始和结束的key
精心编排你的scan语句让他们并行执行
让计算去接近数据通过
推送你的WHERE子句的谓词到服务端过滤器处理
执行聚合查询通过服务端钩子(称为协同处理器)
除此之外,Phoenix还做了一些有趣的增强功能来更多地优化性能:
实现了二级索引来提升非主键字段查询的性能
统计相关数据来提高并行化水平,并帮助选择最佳优化方案
跳过扫描过滤器来优化IN,LIKE,OR查询
优化主键的来均匀分布写压力

二、下载编译Phoenix

wget http://mirror.bit.edu.cn/apache/phoenix/apache-phoenix-4.13.1-HBase-1.3/bin/apache-phoenix-4.13.1-HBase-1.3.tar.gz

2、编译(编译时间较长,耐心等待)
mvn clean package -DskipTests

3、解压
将编译好的phoenix-4.13.1-HBase-1.3-bin.tar.gz解压出来

4、将phoenix-4.13.1-server.jar拷贝到每一个RegionServer下

[root@slave1 ~]# find / -name 'phoenix-4.13.1-HBase-1.3-server.jar'
/opt/apache-phoenix-4.13.1-HBase-1.3/phoenix-4.13.1-HBase-1.3-server.jar
cp phoenix-4.13.1-HBase-1.3-server.jar ../hbase-1.3.1/lib/

5、增加hbase-site.xml 配置


hbase.table.sanity.checks
false

6、重启Hbase

7、登录phoenix
进入phoenix-4.13.1/bin目录执行

[root@master1 phoenix-4.13.1]# cd apache-phoenix-4.13.1-HBase-1.3/bin/
[root@localDev bin]# ./sqlline.py localDev:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:localDev:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:localDev:2181
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/apache-phoenix-4.13.1-HBase-1.3/phoenix-4.13.1-HBase-1.3-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-2.8.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
17/12/21 15:58:06 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connected to: Phoenix (version 4.13)
Driver: PhoenixEmbeddedDriver (version 4.13)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
92/92 (100%) Done
Done
sqlline version 1.2.0
0: jdbc:phoenix:localDev:2181> 

8、简单测试

三、squirrel安装(windows上phoneix可视化工具)

1、下载
下载地址:http://www.squirrelsql.org/
2、安装
cmd进入命令行
在jar包存放路径下输入

java -jar squirrel-sql-3.8.0-standard.jar

一路next就安装完毕

3、配置连接phoneix
在squirrel的lib下添加几个jar包

双击squirrel安装目录下squirrel-sql.bat

点击Drivers然后点击+号

Name自己起,填写url,
class name填写org.apache.phoenix.jdbc.PhoenixDriver
然后点击OK

4、创建一个表

CREATE TABLE IF NOT EXISTS us_population (
      state CHAR(2) NOT NULL,
      city VARCHAR NOT NULL,
      population BIGINT
      CONSTRAINT my_pk PRIMARY KEY (state, city));
UPSERT INTO us_population (state, city, population) values ('NY','New York',8143197);
UPSERT INTO us_population (state, city, population) values ('CA','Los Angeles',3844829);

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在NoSQL分类目录。将固定链接加入收藏夹。