一. Phoenix
1. 定义
Phoenix 最早是 saleforce 的一个开源项目,后来成为 Apache 的顶级项目。 Phoenix 构建在 HBase 之上的开源 SQL 层. 能够让我们使用标准的 JDBC API 去建表, 插入数据和查询 HBase 中的数据, 从而可以避免使用 HBase 的客户端 API. 在我们的应用和 HBase 之间添加了 Phoenix, 并不会降低性能, 而且我们也少写了很多代码.
2. 特点
- 将 SQl 查询编译为 HBase 扫描
- 确定扫描 Rowkey 的最佳开始和结束位置
- 扫描并行执行
- 将 where 子句推送到服务器端的过滤器
- 通过协处理器进行聚合操作
- 完美支持 HBase 二级索引创建
- DML命令以及通过DDL命令创建和操作表和版本化增量更改。
- 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。
3. 架构
4. 数据存储
Phoenix 将 HBase 的数据模型映射到关系型世界
5. hbase和phoenix的对应关系
hbase | phoenix |
---|---|
namespace | database(库) |
table | table(表) |
column family | cf:cq |
column quliafier | column quliafier |
rowkey | 主键 |
在sql中如建表时,指定的主键是联合主键(由多个列共同作为主键), 在hbase中,rowkey就是多个主键共同拼接的结果!
二. 安装详解
- 1. 下载 Phoenix(博主已经准备好了) http://archive.apache.org/dist/phoenix/apache-phoenix-4.14.2-HBase-1.3/
- 2. 解压并修改jar 包
[bigdata@hadoop002 software]$ tar -zxvf apache-phoenix-4.14.2-HBase-1.3-bin.tar.gz -C /opt/module
[bigdata@hadoop002 module]$ mv apache-phoenix-4.14.2-HBase-1.3-bin phoenix
- 3. 复制 jar 包
[bigdata@hadoop002 phoenix]$ cp phoenix-4.14.2-HBase-1.3-server.jar /opt/module/hbase/lib
[bigdata@hadoop002 phoenix]$ cp phoenix-4.14.2-HBase-1.3-client.jar /opt/module/hbase/lib
- 4. 分发 jar 包 需要把刚才 copy 的 2个jar 包分发到其他 HBase 节点
scp -r phoenix-4.14.2-HBase-1.3-server.jar hadoop003:/opt/module/hbase/lib
scp -r phoenix-4.14.2-HBase-1.3-client.jar hadoop003:/opt/module/hbase/lib
scp -r phoenix-4.14.2-HBase-1.3-server.jar hadoop004:/opt/module/hbase/lib
scp -r phoenix-4.14.2-HBase-1.3-client.jar hadoop004:/opt/module/hbase/lib
- 5. 配置环境变量
[bigdata@hadoop002 phoenix]$ sudo vim /etc/profile
# phoenix_home
export PHOENIX_HOME=/opt/module/phoenix
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PATH:$PHOENIX_HOME/bin
// 使立即生效
[bigdata@hadoop002 phoenix]$ source /etc/profile
- 6. 启动 hadoop, zookeeper, HBase
[bigdata@hadoop002 phoenix]$ start-dfs.sh
[bigdata@hadoop003 module]$ start-yarn.sh
[bigdata@hadoop002 phoenix]$ ../zookeeper-3.4.10/bin/start-allzk.sh
[bigdata@hadoop002 phoenix]$ start-hbase.sh
- 7. 启动 Phoenix
[bigdata@hadoop002 phoenix]$ bin/sqlline.py hadoop002:2181
- 8. 退出
0: jdbc:phoenix:hadoop002:2181> !quit
本次的分享就到这里了