一、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>
三、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
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);