zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    装饰者模式【结构模式】
    代理模式【结构模式】
    原型模式【构建模式】
    建造者模式【构建模式】
    抽象工厂模式【构建模式】
    工厂模式【构建模式】
    单例模式【构建模式】
    设计原则
    Collector 源码分析
    Maven 包命令
  • 原文地址:https://www.cnblogs.com/llwxhn/p/12434008.html
Copyright © 2011-2022 走看看