phoenix for cdh5.9 搭建以及注意点



集群节点 三个mini1,mini2,mini3
1,下载
phoenix for CDH下载位置,我下载的是目前phoenix对应的cdh最高版本5.9,但是我用的是CDH最高版本5.13(目前最高版本。测试5.13,生产上用的是CDH5.11)
phoenix for cdh5.9 搭建以及注意点
2,编译phoenix for CDH5.9源码包
用maven,电脑上装个maven,我是3.3.9版本的maven。不要太在意装哪个版本的maven感觉都能编译。(maven怎么装百度一大把)
然后开始菜单进入cmd,进行编译
进入你存放phoenix源码的路径,我是放在G:\Phoenix\phoenix-for-cloudera-4.9-HBase-1.2-cdh5.9
phoenix for cdh5.9 搭建以及注意点
直接执行编译命令:
mvn clean package -DskipTests
(注意:变过程会很慢,很慢,很慢.........并且过程会报错编译失败,那就多编译几次。。。我是经过N次编译。。。让人崩溃)
phoenix for cdh5.9 搭建以及注意点
出现 如上图,恭喜你编译成功啦!!!!!!!!!!!!!!!!!
phoenix for cdh5.9 搭建以及注意点
打好包后一般都在target文件夹下。
phoenix for cdh5.9 搭建以及注意点
3.将phoenix-4.9.0-cdh5.9.1.tar.gz,上传cdh的hbase集群,解压tar包,tar包我放在/home/phoenix目录下:解压
phoenix for cdh5.9 搭建以及注意点
将phoenix-4.9.0-cdh5.9.1-server.jar包拷贝到每一个节点的RegionServer下
RegionServer的路径看你怎么装CDH了。但是一般默认都在
/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hbase/lib,路径下
(主要查这个目录:/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hbase/lib)
每一个节点都要!
CDH修改方法:
增加hbase-site.xml 配置
<property><name>hbase.table.sanity.checks</name><value>false</value></property>
 添加方式如下:
在集群管理页面点击Hbase,进入Hbase管理界面
 
 phoenix for cdh5.9 搭建以及注意点
 
 
 
 
点击配置:
                
 phoenix for cdh5.9 搭建以及注意点
 

选择高级:
     phoenix for cdh5.9 搭建以及注意点             
 
 

增加如下配置:
     phoenix for cdh5.9 搭建以及注意点   
 
 重启Hbase  
    这个很简单,不多说,会玩cloudermanager的人都知道。

登录phoenix
  进入phoenix-4.8.0-cdh5.8.0/bin目录执行。
phoenix for cdh5.9 搭建以及注意点
进入phoenix,(mini1:2181,不是zk的leader节点,而是当前节点的)
phoenix for cdh5.9 搭建以及注意点
!tables命令查看表
phoenix for cdh5.9 搭建以及注意点
select * from "device_report" limit 10;可以查询了。。。。

我在hbase中先建好表:score,列簇是a,插入3个数据,如下
phoenix for cdh5.9 搭建以及注意点

device_report,score这连个表我已经和hbase进行映射完了,映射方式是:
create table "score"(NAME archar primary key, "a"."age" varchar,"a"."sex" varchar); 
注意:表名score,必须要加双引号!列簇和列名也是一样加双引号!
注意的问题:
phoenix 是大小写很敏感的,hbase在建表时,表名小写用引号还能查,字段小写绝对不支持条件,所以在hbase建表时,强烈建议,表名,列簇,rowkey,列名都大写,就可以和phoenix衔接了。
不知道为什么在查询的过程的中,只要带有where 字段的查询,就报列和列名找不到
列:试了很多中形式如下
select * from "score" where "age"="16";
select * from "score" where "a"."age"="16";
select * from "score" where "a.age"="16";
select * from "score" where "a:age"="16";
 select * from "score" where age=16;
 select * from "score" a where a.age=16;
 select * from "score" a where a.age="16";
--------------不管什么形式--只要加条件查询了就报一样的错,都是 Undefined column. columnName如下--------------------------------------
Error: ERROR 504 (42703): Undefined column. columnName=AGE (state=42703,code=504)
org.apache.phoenix.schema.ColumnNotFoundException: ERROR 504 (42703): Undefined column. columnName=AGE
        at org.apache.phoenix.schema.PTableImpl.getColumn(PTableImpl.java:743)
        at org.apache.phoenix.compile.FromCompiler$SingleTableColumnResolver.resolveColumn(FromCompiler.java:449)
        at org.apache.phoenix.compile.ExpressionCompiler.resolveColumn(ExpressionCompiler.java:358)
        at org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.resolveColumn(WhereCompiler.java:181)
        at org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.visit(WhereCompiler.java:169)
        at org.apache.phoenix.compile.WhereCompiler$WhereExpressionCompiler.visit(WhereCompiler.java:156)
        at org.apache.phoenix.parse.ColumnParseNode.accept(ColumnParseNode.java:56)
        at org.apache.phoenix.parse.CompoundParseNode.acceptChildren(CompoundParseNode.java:64)
        at org.apache.phoenix.parse.ComparisonParseNode.accept(ComparisonParseNode.java:45)
        at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:130)
        at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:100)
        at org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:556)
        at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:507)
        at org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:202)
        at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:157)
        at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:420)
        at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:394)
        at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:280)
        at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:270)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:269)
        at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1515)
        at sqlline.Commands.execute(Commands.java:822)
        at sqlline.Commands.sql(Commands.java:732)
        at sqlline.SqlLine.dispatch(SqlLine.java:813)
        at sqlline.SqlLine.begin(SqlLine.java:686)
        at sqlline.SqlLine.start(SqlLine.java:398)
        at sqlline.SqlLine.main(SqlLine.java:291)
如下图:
phoenix for cdh5.9 搭建以及注意点