CDH安装phoenix

CDH安装phoenix

1.背景

​ base 提供很方便的shell脚本以及java API等方式对Hbase进行操作,但是对于很对已经习惯了关系型数据库操作的开发来说,有一定的学习成本,如果可以像操作mysql等一样通过sql实现对Hbase的操作,那么很大程度降低了Hbase的使用成本。Apache Phoenix 组件就完成了这种需求,官方注解为 “Phoenix -we put the SQL back in NoSql”,通过官方说明,Phoenix 的性能很高,相对于 hbase 原生的scan 并不会差多少,而对于类似的组件 hive、Impala等,性能有着显著的提升

2.安装

1.集群环境

CDH版本是5.16.1,在阿里云上的三台集群.Hbase也是部署了3台机器.三台机器的配置都是2核8G

2.安装的parcel文件下载

从官网选择CDH相近的版本下载:http://www.apache.org/dist/phoenix/,我的CDH是5.16.1的,所以只能选

APACHE_PHOENIX-4.14.0-cdh5.14.2这个版本.

wget http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-el7.parcel
wget http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/manifest.json
wget http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-el7.parcel.sha512

3.将parcel文件的hash值写入sha文件

[root@hadoop001 parcel-repo] sha1sum APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-el7.parcel
5aebefdeb239a9dc7a042b891e2aac98336a25bc  APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-el7.parcel

[root@hadoop001 parcel-repo] vim APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-el7.parcel.sha

4.CDH分配并激活Phoenix

CDH安装phoenix_第1张图片

5.phoenix-4.14.0-cdh5.12.2-server.jar复制

将phoenix-4.14.0-cdh5.12.2-server.jar这个jar包复制到其余三台机器的hbase/lib路径下

cp /opt/cloudera/parcels/APACHE_PHOENIX/lib/phoenix/phoenix-4.14.0-cdh5.14.2-server.jar /opt/cloudera/parcels/CDH/lib/hbase/lib/
scp /opt/cloudera/parcels/APACHE_PHOENIX/lib/phoenix/phoenix-4.14.0-cdh5.14.2-server.jar hadoop002:/opt/cloudera/parcels/CDH/lib/hbase/lib/
scp /opt/cloudera/parcels/APACHE_PHOENIX/lib/phoenix/phoenix-4.14.0-cdh5.14.2-server.jar hadoop003:/opt/cloudera/parcels/CDH/lib/hbase/lib/

6.启动

启动之前需要重启一下Hbase服务,直接在CDH界面操作

[root@hadoop001 bin] pwd
/opt/cloudera/parcels/APACHE_PHOENIX/lib/phoenix/bin
[root@hadoop001 bin] ./sqlline.py

使用,基本上是sql的使用

1.建表

CREATE TABLE IF NOT EXISTS dept (
      deptno Integer,
    dname varchar(14),
    loc varchar(13)
      CONSTRAINT dept_pk PRIMARY KEY (deptno));

2.插入数据

upsert into dept values (10, 'ACCOUNTING', 'NEW YORK');
upsert into dept values (20, 'RESEARCH', 'DALLAS');
upsert into dept values (30, 'SALES', 'CHICAGO');
upsert into dept values (40, 'OPERATIONS', 'BOSTON');

3.查询数据

select * from dept;

0: jdbc:phoenix:> select * from dept;
+---------+-------------+-----------+
| DEPTNO  |    DNAME    |    LOC    |
+---------+-------------+-----------+
| 10      | ACCOUNTING  | NEW YORK  |
| 20      | RESEARCH    | DALLAS    |
| 30      | SALES       | CHICAGO   |
| 40      | OPERATIONS  | BOSTON    |
+---------+-------------+-----------+
4 rows selected (0.233 seconds)

3.Phoenix使用注意点(坑)

1.数据类型的转换

转换比较多,这边仅列出部分

mysql phoenix
char/varchar varchar
可能会出现mysql的varchar的长度为10,但是phoenix的varchar也为10的时候会插不进去,一般phoenix的长度会设置成mysql的2倍
int integer
datetime/timestamp timestamp

2.时区

phoenix的a.timezone时区可能会出现不对应(读和写),时区的修改可以通过修改源代码来修复

3.数据重复

有时候根据ID查询一条数据的时候,结果会出现两条一模一样的记录

你可能感兴趣的:(hadoop)