CDH5.7.1下安装Phoenix4.14方案

安装环境

CDH版本:CDH5.7.1

服务器操作系统:CentOS 7.5

Phoenix版本:Phoenix4.14

2 下载Phoenix4.14包

下载地址:http://archive.apache.org/dist/phoenix/

 1   点击进入带有cdh字样的Phoenix

 2  点击进入bin目录

3  点击下载apache-phoenix-4.14包 

3 配置Phoenix

3.1  上传至服务器

#namenode节点上

#apache-phoenix-4.14.0-cdh5.11.2-bin.tar.gz包上传至/opt目录下;

#tar  xf  apache-phoenix-4.14.0-cdh5.11.2-bin.tar.gz

# cd  /opt/apache-phoenix-4.14.0-cdh5.11.2-bin

#复制jar包到指定目录

#cp  phoenix-4.14.0-cdh5.11.2-server.jar   phoenix-core-4.14.0-cdh5.11.2.jar  phoenix-core-4.14.0-cdh5.11.2-sources.jar  phoenix-core-4.14.0-cdh5.11.2-tests.jar    /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hbase/lib/

#将文件权限改为777

#cd  /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hbase/lib/

# chmod  777  phoenix-*

#复制jar包到指定目录(为啥要复制到两个目录下,不要问,问就不知道)

# cd  /opt/apache-phoenix-4.14.0-cdh5.11.2-bin

#cp  phoenix-4.14.0-cdh5.11.2-server.jar   phoenix-core-4.14.0-cdh5.11.2.jar  phoenix-core-4.14.0-cdh5.11.2-sources.jar  phoenix-core-4.14.0-cdh5.11.2-tests.jar   /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hbase  

#cd  /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hbase/

# chmod  777  phoenix-*

#HBase Master节点和所有HBase RegionServer节点上均如此配置

3.2  修改配置

3.2.1  CDH管理界面配置

hbase-site.xml HBase 服务高级配置代码段(安全阀)

hbase-site.xml HBase 客户端高级配置代码段(安全阀)

<property>

  <name>phoenix.schema.isNamespaceMappingEnabled</name>

  <value>true</value>

</property>

<property>

  <name>phoenix.schema.mapSystemTablesToNamespace</name>

  <value>true</value>

</property>

<property>

  <name>hbase.table.sanity.checks</name>

  <value>false</value>

</property>

点击集群-->HBase-->配置里输入hbase-site.xml

  4  配置里搜索hbase-site.xml

 5 HBase 服务高级配置代码段

 6 HBase 客户端高级配置代码段

回到界面上,提示需要重新部署客户端配置和重启hbase,hue;

 7   重启配置生效

3.2.2  覆盖配置文件

#namenode上配置

#备份原先的phoenix配置文件

#cd  /opt/apache-phoenix-4.14.0-cdh5.11.2-bin/bin

#mkdir   -pv  bak

#cp -apr  hbase-site.xml    bak/

#将文件/etc/hbase/conf.cloudera.hbase/hbase-site.xml覆盖/opt/apache-phoenix-4.14.0-HBase-1.2-bin/bin/hbase-site.xml

# cp /etc/hbase/conf.cloudera.hbase/hbase-site.xml  /opt/apache-phoenix-4.14.0-cdh5.11.2-bin/bin/hbase-site.xml

#其他节点均如此配置

测试

4.1  phoenix写入数据

主要过程:在phoenix中创建schema和表,并向表中写数据,并在hbase中namespace查到对应表和数据

4.1.1  创建schema和表

#cd  /opt/apache-phoenix-4.14.0-cdh5.11.2-bin/bin

#连接zookeeper

#./sqlline.py   zookeeper(指的是zookeeper地址)

 8  测试连接

#建立名为TESTschema

0: jdbc:phoenix:NN01:2181> create schema test;

#建立名为TEST001的表

0: jdbc:phoenix:NN01:2181> CREATE table TEST.TEST001 ( ID VARCHAR PRIMARY

KEY, "cf"."field0" VARCHAR ) column_encoded_bytes=0;

#查询hbase,发现已创建对应schema和表 

 图9  列出hbasenamespaceTEST下的表

4.1.2  插入数据 

#phoenix中插入数据

0: jdbc:phoenix:NN01:2181> upsert into TEST.TEST001 (ID,"field0") values

('0001','ADADFASDFD'); 

 图10 phoenix中查看TEST001表中的数据

#可以看到hbase中存在对应数据;

 11 hbase中查看TEST001表中的数据

4.2   hbase写入数据

主要过程:hbase中创建 namespace和表,并向表中写数据

在phoenix中创建的schema和表,在phoenix中可以直接查到数据;

4.2.1  创建hbase表并插入数据

#hbase sehll

#创建namespace(如果没有,可以创建,后面例子是在已有的namespace中创建表)

>create_namespace  "aaa"

#列出namespace

>list_namespace

#在已有且名为TESTnamespace中创建表;

hbase(main):092:0> hbase(main):110:0> create 'TEST:TEST002', {NAME

=>'CF',COMPRESSION => 'snappy'} 

#手动插入数据

>put 'TEST:TEST002','1234356','CF:field0','dasdad'

#或利用ycsb插入数据(实验中为此操作)

ycsb load hbase10 -p table=TEST:TEST002 -p columnfamily=CF -P

./workloads/workloada -p fieldcount=1 -p fieldlength=40 -p recordcount=100 -p

clientbuffering=true -threads 8 -s

 12  TEST002表中插入的数据

4.2.2  创建phoenix映射表

#在在phoenix创建映射表并查询数据

0: jdbc:phoenix:NN01:2181> CREATE TABLE TEST.TEST002 ( ID VARCHAR PRIMARY KEY, CF."field0" VARCHAR) column_encoded_bytes=0; 

 13 phoenix创建映射表和查询数据

4.3  注意事项 

a) Phoenix 对表名和列名都是区分大小写的,但是,如果不加双引号,则默认为大写。

b) 表名要和 HBase 中建立的表名一致。HBase 默认的主列名是 ROW,所以要

ROW”设置为主键。列簇和列名也要用双引号括起来,要不然小写会自动变成大写。

特别注意:如果你使用的是 Phoenix 4.10 及以上的版本,可能会遇到查不出数据的情况:

那么如何解决这个问题呢?

在使用 Phoenix 创建表的时候,需要设置 COLUMN_ENCODED_BYTES 属性为 0,即不 让 Phoenix column family 进行编码。

举例:

create table TEST.USER(pk varchar primary

key,url.id varchar,url.url_id varchar,url.url_name varchar) column_encoded_bytes=0;

5 支持索引

5.1修改配置

在hbase-site.xml HBase 服务高级配置代码段(安全阀)添加此段

<property>

  <name>hbase.regionserver.wal.codec</name>

  <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>

</property>

 14 修改hbase-site.xml的配置

 注意:此步为后续补充,完成第四步操作后,发现创建索引存在问题,故做补充;

可以在第一次修改hbase-site.xml配置时加入,避免hbase二次重启;

如果重启时发现RegionServer挂了,可适当调整此参数;

hbase.regionserver.global.memstore.lowerLimit

 15  可修改的参数

5.2创建索引

5.2.1 测试用表结构

HBASE

>create_namespace  TEST

>create 'TEST:DAT_GX', { NAME =>'d', COMPRESSION => 'snappy',BLOCKCACHE => 'false'}

> desc "TEST:DAT_GX"

 图 16 HBaseDAT_GX的表结构

>scan 'TEST:DAT_GX',LIMIT=>1

 

 图 17 Hbase表中列族格式

phoenix

>CREATE TABLE TEST.DAT_GX ("ROW" VARCHAR PRIMARY KEY, "d"."c" VARCHAR,

"d"."d" VARCHAR,"d"."m" VARCHAR,"d"."s" VARCHAR,"d"."t" VARCHAR) column_encoded_bytes=0;

 图18 映射后phoenixDAT_GX的表结构

5.2.2单列索引测试

以列族中列d:s创建secondary index

>create index dat_s on DAT_GX ("d"."s");

>!tables

>select "ROW","d"."s" from  DAT_GX where "d"."s" = '20181220173433000';

创建后,hbase中会多一个表dat_s,在phoenix中看不到,大体结构如下:

> desc 'TEST:DAT_S'

5.2.3多列索引测试

>create index dat_t  on DAT_GX ("d"."s","d"."t")

>!tables

>select "ROW","d"."s" from DAT_GX where "d"."t"='LDYCCS1D5G0011299';

6. 创建视图

6.1hbase中创建表

>create 'TEST:USER', 'INFO'

#手动插入数据

>put 'USER', 'bbbZZZ1004', 'INFO:NAME', 'WeiDong'

>scan "TEST:USER"

6.2phoenix创建视图

>use  TEST

>create view user(

    pk varchar primary key,

    info.name varchar,

    info.age  varchar,

    info.home varchar

) as select * from user;

>!tables

>select *  from user;

6.3查看视图能否实时更新

#在hbase中插入数据

>put 'TEST:USER', 'cccTTT1007', 'INFO:NAME', 'YongFa'

> scan "TEST:USER"

#看看Phoenix的视图能否实时更新,查看原先的user视图,发现数据已经实时更新过去了;

>use TEST;

>select  *  from user;

原文地址:https://www.cnblogs.com/llwxhn/p/12434008.html