1. 简介、概述
Phoenix 最早是 saleforce 的一个开源项目,后来成为 Apache 的顶级项目。
Phoenix 构建在 HBase 之上的开源 SQL 层。能够让我们使用标准的 JDBC API 去建表,插入数据和查询 HBase 中的数据,从而可以避免使用 HBase 的客户端 API。
Apache Phoenix 通过结合两个方面的优点,在Hadoop中为低延迟应用提供了OLTP和运营分析:
Apache Phoenix与Spark、Hive、Pig、Flume、Map Reduce等Hadoop产品完全集成。
通过定义良好的行业标准api,成为OLTP和Hadoop操作分析的可信数据平台。
在我们的应用和 HBase 之间添加了 Phoenix,并不会降低性能,而且我们也少写了很多代码。
1.1 phoenix 特点
1.2 存储结构
HBase 的数据模型映射为关系型数据模型
对于Phoenix来说,HBase的rowkey会被转换成primary key,column family如果不指定则为0否则字段名会带上,qualifier转换成表的字段名
1.3 Phoenix 与 Hbase 之间的表映射关系
1.4 Phoenix数据类型
数据类型 | Java Map | 占用大小 (byte) |
---|---|---|
INTEGER | java.lang.Integer | 4 |
UNSIGNED_INT | java.lang.Integer | 4 |
BIGINT | java.lang.Long | 8 |
UNSIGNED_LONG | java.lang.Long | 8 |
TINYINT | java.lang.Byte | 1 |
UNSIGNED_TINYINT | java.lang.Byte | 1 |
SMALLINT | java.lang.Short | 2 |
UNSIGNED_SMALLINT | java.lang.Short | 2 |
FLOAT | java.lang.Float | 4 |
UNSIGNED_FLOAT | java.lang.Float | 4 |
DOUBLE | java.lang.Double | 8 |
UNSIGNED_DOUBLE | java.lang.Double | |
DECIMAL | java.math.BigDecimal | DECIMAL(p.,s) |
BOOLEAN | java.lang.Boolean | |
TIME | java.sql.Time | |
DATE | java.sql.Date | 8 |
TIMESTAMP | java.sql.Timestamp | 12 |
UNSIGNED_TIME | java.sql.Time | 8 |
UNSIGNED_DATE | java.sql.Date | 8 |
UNSIGNED_TIMESTAMP | java.sql.Timestamp | 12 |
VARCHAR | java.lang.String | VARCHAR(n) |
CHAR | java.lang.String | CHAR(n) |
BINARY | byte[] | BINARY(n) |
VARBINARY | byte[] | VARBINARY |
2. 基于CDH6.3.2离线安装 Phoenix Parcel 5.0.0-2.0(附安装包)
# 本安装方式为Linux http源离线安装方式,不需要可跳过此步骤
CDH6.3.2 phoenix5.0.0-2.0 百度网盘 parcel安装包下载地址
1.提前下载下面几个文件并放置在cdh主节点的/var/www/html下,PHOENIX-1.0.jar放置在/opt/cloudera/csd下
manifest.json
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el6.parcel
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el6.parcel.sha
PHOENIX-1.0.jar
systemctl start httpd
如果已启动则不需要再启动,访问主节点ip/phoenix看是否启动成功,若出现下面的界面则成功。
yum install -y httpd
3.使用parcel安装Phoenix5
在CM中选择主机->Parcel–>配置.如果有未安装的parcel包,可以直接看到,选择它然后点击保存,点击’分配’–>‘激活’.
4.CM中添加Phoenix服务
确定CSD配置目录/opt/cloudera/csd,在CM中选择管理–>设置,搜索csd对路径配置
把下载的PHOENIX-1.0.jar已经放置在了/opt/cloudera/csd,直接重启CM服务.
# Cloudera-UI不生效,需使用命令重新启动
systemctl restart cloudera-scm-server
重新登录CM,重启Cloudera Management Service过期配置服务。
此时可以看到Phoenix已经出现在CM的管理页面:
5.配置HBASE
phoenix是在hbase上实现了SQL接口,并且手工安装开源版phoenix的时候也需要在hbase节点的lib目录下放置phoenix的jar包,通过CM安装就免去这些手工的工作。
在Hbase–>配置 中搜索hbase–site,然后在”hbase–site.xml 的 HBase 服务高级配置代码段” 中配置如下内容。
或点击以XML格式查看,输入下面的代码:
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>phoenix.functions.allowUserDefinedFunctions</name>
<value>true</value>
<description>enable UDF functions</description>
</property>
/opt/cloudera/parcels/PHOENIX/bin/phoenix-sqlline hbase1,hbase2,hbase3
或
phoenix-sqlline
3. Phoenix 常用命令、基本操作
phoenix-sqlline
# 退出
!quit
# 查看所有表
!tables
# 查询表
select * from "test";
!desc 表名
# 删除表
drop table "test";
# 使用视图view映射Hbase中表
view只可进行查询,且在删除表时不删除Hbase中源表,只删除当前view映射
view名称需与表名一致,view列名和hbase列族名的列限定符一致
create view "test" (id varchar primary key,"info"."createtime" UNSIGNED_DATE,"info1"."age" UNSIGNED_LONG)column_encoded_bytes=0;
# 使用Table映射Hbase中表
对phoenix中Table进行CRUD时,Hbase中表也会发生变化。
drop table 时 也会删除Hbase中表。
create table "test" ("ROW" varbinary primary key,"info"."createtime" varbinary,"info1"."age" varbinary)column_encoded_bytes=0;
put 'test','1001','info:createtime',Bytes.toBytes(1602237645881)
put 'test','1001','info1:age',Bytes.toBytes(16)
4. 补充
原文地址:https://blog.csdn.net/haoheiao/article/details/126583757
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_30328.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!