Target:
此文目的是为了记录一个临时性的HBase查询需求(需要按照"info:time"过滤出某一天的数据总量),由于Hbase Shell不支持SQL协议查询不变,引入了Phoeinx使用SQL完成此需求。
另外,EMR4.9.0是不原生支持Phoenix服务的,故有此一文。
软件版本:
EMR4.9.0(HDFS3.2.1 Yarn3.2.1 Zookeeper3.6.2 HBase2.3.4)
Phoenix5.1.0
HBase配置(hbase-site.xml):
1.如图,首先在④中新增配置项处新增如下属性
phoenix.schema.isNamespaceMappingEnabled true
hbase.unsafe.stream.capability.enforce false
hbase.table.sanity.checks false
hbase.regionserver.wal.codec org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
hbase.wal.provider filesystem
2.其次,保存之后点击⑥中部署客户端配置使其生效
可以去hbase的conf目录下验证,本环境验证路径为:
/etc/ecm/hbase-conf-2.3.4-1.0.0/hbase-site.xml
安装并整合Phoeinx:
1.Phoeinx简介:
为HBase提供SQL查询,和JDBC API代码操作能力
2.Phoenix下载:
下载地址:
https://phoenix.apache.org/download.html
如图,建议选择半年前的稳定版,5.1.0-hbase.2.3
3.Phoenix安装:
将安装包放于/opt/apps/ecm/service/phoenix目录下,
并解压之:
4.phoenix-hbase-server包放到hbase的lib目录
参考命令:
cp /opt/apps/ecm/service/phoenix/phoenix-hbase-2.3-5.1.0-bin/phoenix-server-hbase-2.3-5.1.0.jar /opt/apps/ecm/service/hbase/2.3.4-1.0.0/package/hbase-2.3.4-1.0.0/lib/
注:将此包拷贝在HBase的所有节点上
5.配置环境变量
vi /etc/profile.d/phoenix.sh
export PHOENIX_HOME=/opt/apps/ecm/service/phoenix/phoenix-hbase-2.3-5.1.0-bin
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PATH:$PHOENIX_HOME/bin
6.重启HBase并启动Phoenix
启动Phoenix命令:
/opt/apps/ecm/service/phoenix/phoenix-hbase-2.3-5.1.0-bin/bin/sqlline.py emr-header-2.cluster-238606,emr-header-1.cluster-238606,emr-worker-1.cluster-238606:2181
测试Phoeinx查询HBase:
1.HBase中有一测试表,Test.student,测试数据与表格式如下图:
2.Phoeinx中先引入Test这个Schema其次创建表视图:
create schema "Test"
use "Test";
create view "Test"."student"(id varchar primary key,"info"."name" varchar,"info"."age" varchar,"info"."sex" varchar) column_encoded_bytes=0;
注:不建议创建表即create table "Test"."student",原因是,drop此table时会将hbase中的元数据删掉,而view不会,更安全
3.通过phoeinx查询hbase中表"Test:student"数据:
select * from "Test"."student";
注:使用!quit关闭phoeinx连接
V1:
ChangeLog:主要重心在介绍引入Phoeinx服务的过程,下一版可加入Hbase和Phoenix的框架知识和应用场景
Time:2021-08-27 22:43:03