CDH5.14集群下Phoenix4.14.0安装及性能对比phoenix/impala/hive

痛点&目的:

  1. Hbase 作为NoSQL数据库,语法特别难用,为了方便我们使用标准SQL查询Hbase数据。
  2. Phoenix支持DDL与DML 增删改查。
  3. Impala给外部提供的接口难以提升并发量。
  4. 减轻Impala的查询压力。

 

 

官网:

http://phoenix.apache.org

 

Phoneix安装:

 

SIT环境Cloudera5.14.4的hbase 为1.2版本,因此到phoneix官网下载对应版本的tar包并上传至其中一台机器,这里上传到gateway。

解压tar包: tar –zxvf apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz –C /opt/app

 

建软连接: ln –s /opt/app/apache-phoenix-4.14.0-cdh5.14.2-bin /opt/cloudera/parcels/phoenix

 

环境变量:

 

在CM里新增一个参数: 然后重启hbase服务

 

 hbase 集群中的配置文件 hbase-site.xml 拷贝到 Phoenix  bin 目录下,覆盖原有的配置文件

 

 

 hdfs 集群中的配置文件 core-site.xml hdfs-site.xml 拷贝到 Phoenix  bin 目录下

 

Copy以下三个jar包到CDH集群每台机器的 hbase的lib下:

cp $PHOENIX_HOME/phoenix-4.14.0-cdh5.14.2-server.jar /opt/cloudera/parcels/CDH/lib/hbase/lib/

cp $PHOENIX_HOME/phoenix-4.14.0-cdh5.14.2-client.jar /opt/cloudera/parcels/CDH/lib/hbase/lib/

cp $PHOENIX_HOME/phoenix-core-4.14.0-cdh5.14.2.jar /opt/cloudera/parcels/CDH/lib/hbase/lib/

 

在$PHOENIX_HOME/bin下执行命令进入phoenix shell:

./sqlline.py sithd01,sithd02,sithd03:2181

 

执行SQL文件:

 

导数据文件至phoenix表:

 

 

 

 

 

 

 

 

 

刚才的语法新建的phoenix表和数据:

Phoenix的表在hbase中可以看到:

 

与hbase已有的表做映射:

在hbase shell中准备一张表:

 

 

在phoenix中创建映射视图:

Tips:

HBase数据表默认主键列名是ROW

表名和列族以及列名需要用双引号括起来, 因为HBase是区分大小写的,如果不用双引号括起来的话Phoenix在创建表的时候会自动将小写转换为大写字母,这样HBase中会创建另外一张表,大小写不同。

查询表名需要用双引号括起来.

 

实施同步hbase的最新数据:

 

建phoenix表则可以与hbase相互操作.

 

 

性能对比

Phoenix查询Hbase  VS  impala 查询hive与hbase的映射表

数据量586968

准备:

--建hive的hbase映射表

CREATE TABLE IF NOT EXISTS dl_noahwm_cbs.hbase_tbl_doc_record (

  key string comment "hbase rowkey",

  `docrecordid` STRING COMMENT '上传文档ID',

  `doccatcode` STRING COMMENT '文档分类编码',

  `doccatindex` STRING COMMENT '文档索引号',

  `docname` STRING COMMENT '文档名称',

  `docextension` STRING COMMENT '文档扩展名',

  `docsize` STRING COMMENT '文档大小',

  `docdesc` STRING COMMENT '文档说明',

  `version` STRING COMMENT '版本号',

  `docaccessid` STRING COMMENT 'ECM访问ID',

  `bizgroup` STRING COMMENT '业务所属板块',

  `isdeleted` STRING COMMENT '逻辑删除',

  `createdbyid` STRING COMMENT '添加人',

  `createdtime` STRING COMMENT '添加日期',

  `lastmodifiedbyid` STRING COMMENT '最后更新人',

  `lastmodifiedtime` STRING COMMENT '最后更新日期',

  `src_sys_name` STRING COMMENT 'source system name',

  `ins_gmt_ts` STRING COMMENT 'insert timestamp',

  `upt_gmt_ts` STRING COMMENT 'update timestamp')

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,record:docrecordid,record:doccatcode,record:doccatindex,record:docname,record:docextension,record:docsize,record:docdesc,record:version,record:docaccessid,record:bizgroup,record:isdeleted,record:createdbyid,record:createdtime,record:lastmodifiedbyid,record:lastmodifiedtime,record:src_sys_name,record:ins_gmt_ts,record:upt_gmt_ts")   

TBLPROPERTIES("hbase.table.name" = "hbase_tbl_doc_record");

 

--插入数据: 需as字段否则会乱序

insert into table hbase_tbl_doc_record

select docrecordid as key,docrecordid as docrecordid,

doccatcode as doccatcode,

doccatindex as doccatindex,

docname as docname,

docextension as docextension,

docsize as docsize,

docdesc as docdesc,

version as version,

docaccessid as docaccessid,

bizgroup as bizgroup,

isdeleted as isdeleted,

createdbyid as createdbyid,

createdtime as createdtime,

lastmodifiedbyid as lastmodifiedbyid,

lastmodifiedtime as lastmodifiedtime,

src_sys_name as src_sys_name,

ins_gmt_ts as ins_gmt_ts,

upt_gmt_ts as upt_gmt_ts from tbl_doc_record;

 

 

--phoenix DDL

 

create view "hbase_tbl_doc_record"(

"ROW" varchar primary key,

"record"."docrecordid" varchar,

"record"."doccatcode" varchar,

"record"."doccatindex" varchar,

"record"."docname" varchar,

"record"."docextension" varchar,

"record"."docsize" varchar,

"record"."docdesc" varchar,

"record"."version" varchar,

"record"."docaccessid" varchar,

"record"."bizgroup" varchar,

"record"."isdeleted" varchar,

"record"."createdbyid" varchar,

"record"."createdtime" varchar,

"record"."lastmodifiedbyid" varchar,

"record"."lastmodifiedtime" varchar,

"record"."src_sys_name" varchar,

"record"."ins_gmt_ts" varchar,

"record"."upt_gmt_ts" varchar

);

 

查询性能对比

Query1: select count(1) from hbase_tbl_doc_record where docsize>'200000';

Hive: 45.67s

Impala: 15.56s

Phoenix: 2.39s

 

 

Query2: select distinct docsize  from hbase_tbl_doc_record where docsize>'200000' limit 20;

Hive: 54.67s

 

Impala: 10.81s

 

Phoenix: 0.048s

 

 

 

 

 

 

 

 

 

 

Query3: select count(1)  from hbase_tbl_doc_record where docsize like '20%';

Hive:42.25s

 

Impala: 11.8s

 

Phoenix: 2.322s

 

 

 

 

 

Query4: select * from hbase_tbl_doc_record where createdtime >'2016-01-01 00:00:00' limit 100;

Hive: 31.7s

Impala: 2.17s

 

Phoenix: 0.214s

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王义凯_Rick

遇见即是缘,路过就给个评论吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值