Phoenix简介
Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。
1)容易集成:如Spark,Hive,Pig,Flume和Map Reduce;
2)操作简单:DML命令以及通过DDL命令创建和操作表和版本化增量更改;
3)支持HBase二级索引创建。
phoenix是构建的Hbase之上的,使用标准的SQL操作Hbase,可以做联机事务处理,拥有低延迟的特性。phoenix会把SQL编译成一系列的Hbase的scan操作,然后把scan结果生成标准的JDBC结果集,其底层由于使用了Hbase的API,协处理器,过滤器,处理千万级行的数据也只用毫秒或秒级就搞定。支持有:SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY等操作。
phoenix的安装
phoenix官网:https://phoenix.apache.org/
1、解压
tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz
2、配置环境变量
vi /etc/profile
#增加内容
export PHOENIX_HOME=/data/phoenix-hbase-2.5-5.1.3-bin
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PATH:$PHOENIX_HOME/bin
#重启使之生效
source /etc/profile
3、拷贝文件
将phoenix中的文件拷贝到hbase中
cp /data/phoenix-hbase-2.5-5.1.3-bin/phoenix-server-hbase-2.5.jar /data/hbase-2.5.5/lib/
cp /data/phoenix-hbase-2.5-5.1.3-bin/phoenix-server-hbase-2.5.jar /data/hbase-2.5.5/lib/
如果不拷贝会出现如下错误
Error: org.apache.hadoop.hbase.DoNotRetryIOException: Unable to load configured region split policy 'org.apache.phoenix.schema.MetaDataSplitPolicy' for table 'SYSTEM.CATALOG' Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:339)
at org.apache.hadoop.hbase.util.TableDescriptorChecker.checkClassLoading(TableDescriptorChecker.java:331)
at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:110)
at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2316)
at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:691)
at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:415)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:102)
at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:82)
Caused by: java.io.IOException: Unable to load configured region split policy 'org.apache.phoenix.schema.MetaDataSplitPolicy' for table 'SYSTEM.CATALOG'
at org.apache.hadoop.hbase.regionserver.RegionSplitPolicy.getSplitPolicyClass(RegionSplitPolicy.java:122)
at org.apache.hadoop.hbase.util.TableDescriptorChecker.checkClassLoading(TableDescriptorChecker.java:328)
... 8 more
Caused by: java.lang.ClassNotFoundException: org.apache.phoenix.schema.MetaDataSplitPolicy
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.hadoop.hbase.regionserver.RegionSplitPolicy.getSplitPolicyClass(RegionSplitPolicy.java:118)
... 9 more (state=08000,code=101)
4、重启hbase
#仅master重启
./rolling-restart.sh --master-only
#仅rs重启
./rolling-restart.sh --rs-only