2021-04-26

 

phoenix

1.文档编写目的

  • 内容概述
  1. 安装及配置Phoenix
  2. Phoenix的基本操作
  3. 使用Phoenix bulkload数据到HBase
  • 测试环境

1.CDH6.2

2.Centos7.9

3.Phoenix5.0.0

  • 前置条件
  1. CDH集群正常运行
  2. HBase服务已经安装并正常运行
  3. Centos中的httpd服务已安装并正常使用

2.在CDH集群中安装Phoenix

1.下载Phoenix的Parcel,具体需要下载的三个文件地址为:

在/var/www/html/下创建Phoenix_Parcel目录并下载所需要的文件

wget https://archive.cloudera.com/phoenix/6.2.0/csd/PHOENIX-1.0.jar
wget https://archive.cloudera.com/phoenix/6.2.0/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el6.parcel.sha
wget https://archive.cloudera.com/phoenix/6.2.0/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el6.parcel

image.png

2.可以用浏览器打开页面进行测试。

image.png

3.从Cloudera Manager点击“Parcel”进入Parcel管理页面

点击“配置”,输入Phoenix的Parcel包http地址。

image.png

点击“保存更改“回到Parcel管理页面,发现CM已发现Phoenix的Parcel。

image.png

点击“下载”->“分配”->“激活”

image.png

4.回到CM主页,发现HBase服务需要部署客户端配置以及重启

image.png

重启HBase服务image.pngimage.png

安装完成。

3.如何在CDH集群中使用Phoenix

3.1Phoenix的基本操作

进入Phoenix的脚本命令目录

[root@dloss1 /]# cd opt/cloudera/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267/bin/
[root@dloss1 bin]# ll

image.png

使用Phoenix登录HBase

[root@dloss1 bin]# ./phoenix-sqlline

image.png

需要指定Zookeeper

[root@dloss1 bin]# ./phoenix-sqlline dloss1:2181:/hbase
0: jdbc:phoenix:dloss1:2181:/hbase> !tables

image.png

创建一张测试表

注意:建表必须指定主键。

0: jdbc:phoenix:dloss1:2181:/hbase> create table ha_ph
. . . . . . . . . . . . . . . . . > (
. . . . . . . . . . . . . . . . . > s1 varchar not null primary key,
. . . . . . . . . . . . . . . . . > s2 varchar,
. . . . . . . . . . . . . . . . . > s3 varchar,
. . . . . . . . . . . . . . . . . > s4 varchar
. . . . . . . . . . . . . . . . . > );

image.png

在hbase shell中进行检查

[root@dloss1 ~]# hbase shell
hbase(main):001:0> list

image.png

插入一行数据。注意:Phoenix中没有insert语法,用upsert代替。参考:http://phoenix.apache.org/language/index.html

upsert into hbase_test values('1','name1','name2','name3');
select * from hb_ph;

image.png

在hbase shell中进行检查

hbase(main):006:0> scan 'HB_PH'

image.png

删除这行数据,delete测试

0: jdbc:phoenix:dloss1:2181:/hbase> delete from hb_ph where s1='1';
0: jdbc:phoenix:dloss1:2181:/hbase> select * from hb_ph;

image.png

image.png

在hbase shell中进行检查

image.png

更新数据测试,注意Phoenix中没有update语法,用upsert代替。插入多条数据需要执行多条upsert语句,没办法将所有的数据都写到一个“values”后面。

upsert into hb_ph values('1','testname','testname1','testname2');
upsert into hb_ph values('2','testname','testname1','testname2');
upsert into hb_ph values('3','testname','testname1','testname2');
select * from hb_ph;

image.png

修改数据

0: jdbc:phoenix:dloss1:2181:/hbase> upsert into hb_ph values('1','ting','testname1','testname2');

image.png在hbase shell中进行检查

image.png

批量更新测试,创建另外一张表hb_ph1,表结构与hb_ph一样,并插入五条,有两条是hb_ph中没有的(主键为4,5),有一条与hb_ph中的数据不一样(主键为1),有两条是完全一样(主键为2,3)。

0: jdbc:phoenix:dloss1:2181:/hbase> create table hb_ph1
. . . . . . . . . . . . . . . . . > (
. . . . . . . . . . . . . . . . . > s1 varchar not null primary key,
. . . . . . . . . . . . . . . . . > s2 varchar,
. . . . . . . . . . . . . . . . . > s3 varchar,
. . . . . . . . . . . . . . . . . > s4 varchar
. . . . . . . . . . . . . . . . . > );

upsert into hb_ph1 values('1','ting','testname1','testname2');
upsert into hb_ph1 values('2','testname','testname1','testname2');
upsert into hb_ph1 values('3','testname','testname1','testname2');
upsert into hb_ph1 values('4','testname','testname1','testname2');
upsert into hb_ph1 values('5','testname','testname1','testname2');

image.png

image.png

批量更新,我们用hb_ph1中的数据去更新hb_ph。

0: jdbc:phoenix:dloss1:2181:/hbase> upsert into hb_ph select * from hb_ph1;
0: jdbc:phoenix:dloss1:2181:/hbase> select * from hb_ph;

image.png

批量更新发现对于已有的数据,如果值不一样,会覆盖,对于相同的数据会保持不变,对于没有的数据会直接作为新的数据插入。

3.2使用Phoenix

创建Orders.csv文件并写入数据

1630781,C004,I001,650,09-01-2013
1630782,C003,I006,2500,09-02-2013
1630783,C002,I002,340,09-03-2013
1630784,C004,I006,1260,09-04-2013
1630785,C005,I003,1500,09-05-2013

image.png

上传该文件到HDFS

hadoop fs -put Orders.csv /user/fayson (使用hdfs用户登录)
Hadoop fs -ls /user/fayson

image.png

通过Phoenix创建Orders表

create table IF NOT EXISTS Orders (
   OrderID Integer,
   CustomerID Char(4),
   ItemID Char(4),
   Quantity Integer,
   Date Char(10)
   constraint pk Primary key(OrderID)
);

image.png

执行bulkload命令导入数据

 

 

HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/hbase/hbase-protocol-2.1.0-cdh6.2.1.jar:/opt/cloudera/parcels/CDH/lib/hbase/conf hadoop jar /opt/cloudera/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267/lib/phoenix/phoenix-5.0.0-cdh6.2.0-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool -t Orders -i /user/fayson/Orders.csv

image.png

报错Permission denied: user=hbase, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

注意登录正确的用户并保证需要的文件和目录有足够的权限

在Phoenix查询该表

0: jdbc:phoenix:dloss1:2181:/hbase> select * from Orders;

image.png

在HBase中查询该表

scan 'ORDERS'

image.png

入库条数查询

Phoenix
0: jdbc:phoenix:dloss1:2181:/hbase> select count(*) from Orders;
shell
[root@dloss1 ~]# cat Orders.csv | wc -l

image.png

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值