Phoenix,从直观上来看,是构建在HBase值上的SQL接口,在使用上和关系型数据库非常接近,同时具备大数据分析和低延迟的特性。Phoenix目前在Hadoop操作分析领域应用很广泛。
Phoenix官网介绍如下:
Apache Phoenix enables OLTP and operational analytics in Hadoop for low latency applications by combining the best of both worlds:
- the power of standard SQL and JDBC APIs with full ACID transaction capabilities and
- the flexibility of late-bound, schema-on-read capabilities from the NoSQL world by leveraging HBase as its backing store
Apache Phoenix is fully integrated with other Hadoop products such as Spark, Hive, Pig, Flume, and Map Reduce.
Phoenix不是CDH的默认组件,但是Cloudera提供了独立的Phoenix插件,可以直接集成进CDH,本文描述使用Cloudera Manager在已有的CDH集群上集成Phoenix。
环境:
服务 | 版本 |
---|---|
操作系统 | CentOS Linux release 7.8.2003 (Core) |
Cloudera Manager | 6.3.1 |
CDH | 6.3.2 |
Phoenix | 5.0.0-cdh6.2.0 |
部署要求
1、HBase。由于Phoenix使用HBase作为底层存储,所以需要依赖HBase服务。
2、JDK8。
使用Cloudera Manager安装Phoenix
下载并安装Phoenix Parcel
登录本地源主机下载Phoenix parcel
mkdir -p /var/www/html/cloudera-repos/phoenix/6.2.0/parcels
wget -P /var/www/html/cloudera-repos/phoenix/6.2.0/parcels https://archive.cloudera.com/phoenix/6.2.0/parcels/manifest.json
wget -P /var/www/html/cloudera-repos/phoenix/6.2.0/parcels https://archive.cloudera.com/phoenix/6.2.0/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
wget -P /var/www/html/cloudera-repos/phoenix/6.2.0/parcels https://archive.cloudera.com/phoenix/6.2.0/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha
在Cloudera Manager添加Phoenix Parcel并激活。具体操作类似:Cloudera Manager部署StreamSets。
下载并安装Phoenix csd
登录Cloudera Manager主机。
wget -P /opt/cloudera/csd https://archive.cloudera.com/phoenix/6.2.0/csd/PHOENIX-1.0.jar
重启Cloudera Manager。
添加Phoenix服务
现在可以通过Cloudera Manager添加Phoenix服务到集群中了。
配置并使用Phoenix
在使用Phoenix之前,需要对集群服务进行一些配置。
配置HBase
在Cloudera Manager中的HBase服务配置中,找到 hbase-site.xml 的 HBase 服务高级配置代码段(安全阀),添加如下属性:
属性 | 值 | 说明 |
---|---|---|
hbase.regionserver.wal.codec | org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec | |
phoenix.functions.allowUserDefinedFunctions | true | |
phoenix.schema.isNamespaceMappingEnabled | true | 启用多租户特性 |
phoenix.schema.mapSystemTablesToNamespace | true | 启用多租户特性 |
在Cloudera Manager中的HBase服务配置中,找到 hbase-site.xml 的 HBase 客户端高级配置代码段(安全阀),添加如下属性:
属性 | 值 | 说明 |
---|---|---|
phoenix.schema.isNamespaceMappingEnabled | true | 启用多租户特性 |
phoenix.schema.mapSystemTablesToNamespace | true | 启用多租户特性 |
保存并按照提示进行重启。
配置HDFS
在Cloudera Manager中的HDFS服务配置中,找到 core-site.xml 的群集范围高级配置代码段(安全阀),添加如下属性:
属性 | 值 |
---|---|
hadoop.proxyuser.phoenix.hosts | * |
hadoop.proxyuser.phoenix.groups | * |
保存并按照提示进行重启。
至此,Phoenix服务部署完成。
使用Phoenix
验证Phoenix服务:
phoenix-psql /opt/cloudera/parcels/PHOENIX/lib/phoenix/examples/WEB_STAT.sql /opt/cloudera/parcels/PHOENIX/lib/phoenix/examples/WEB_STAT.csv /opt/cloudera/parcels/PHOENIX/lib/phoenix/examples/WEB_STAT_QUERIES.sql
进入Phoenix终端:
phoenix-sqlline
查看表列表:
!tables
查看使用帮助:
help
如果集群启用了安全,则需要将一些Phoenix系统表权限授权给用户或用户组,否则用户无权使用某些特性。
表 | 权限 |
---|---|
SYSTEM:CATALOG | RX |
SYSTEM:STATS | R |
可能还有其他系统表需要授权,按照提示操作即可。
另外Phoenix的权限和管理方式继承自HBase。