目录
一、Phoenix简介
HBase 提供很方便的shell脚本以及java API等方式对Hbase进行操作,但是对于很对已经习惯了关系型数据库操作的开发来说,有一定的学习成本,如果可以像操作MySQL等一样通过sql实现对HBase的操作,那么很大程度降低了HBase的使用成本。
Apache Phoenix 组件就完成了这种需求,官方注解为 “Phoenix -we put the SQL back in NoSql”,通过官方说明,Phoenix 的性能很高,相对于 HBase 原生的scan 并不会差多少,而对于类似的组件 hive、Impala等,性能有着显著的提升,详细请阅读https://phoenix.apache.org/performance.html。
Apache Phoenix 官方站点:https://phoenix.apache.org/
Phoenix支持的sql语句: https://phoenix.apache.org/language/index.html
Phoenix 支持的DataTypes:https://phoenix.apache.org/language/datatypes.html
Phoenix 支持的函数:https://phoenix.apache.org/language/functions.html
二、Phoenix安装部署
在安装Phoenix之前先安装好HBase集群,Phoenix只是一个工具,只需要在一台机器上安装就可以了,这里我们选择node02服务器上来进行安装即可。
1、下载安装包
从对应的地址下载:http://archive.apache.org/dist/phoenix/
这里我们使用的是
-
apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
2、上传解压
将安装包上传到node02服务器的/xsluo/soft路径下,然后进行解压
cd /xsluo/soft/
tar -zxf apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz -C /xsluo/install/
3、修改配置
1)将phoenix目录下的phoenix-4.8.2-HBase-1.2-server.jar、phoenix-core-4.8.2-HBase-1.2.jar拷贝到各节点 HBase的lib目录下
在node02执行以下命令,将两个jar包拷贝到hbase的lib目录下
cd /xsluo/install/apache-phoenix-4.14.0-cdh5.14.2-bin
scp phoenix-4.14.0-cdh5.14.2-server.jar phoenix-core-4.14.0-cdh5.14.2.jar node01:/xsluo/install/hbase-1.2.0-cdh5.14.2/lib/
scp phoenix-4.14.0-cdh5.14.2-server.jar phoenix-core-4.14.0-cdh5.14.2.jar node02:/xsluo/install/hbase-1.2.0-cdh5.14.2/lib/
scp phoenix-4.14.0-cdh5.14.2-server.jar phoenix-core-4.14.0-cdh5.14.2.jar node03:/xsluo/install/hbase-1.2.0-cdh5.14.2/lib/
2)将HBase的配置文件hbase-site.xml、 hadoop下的配置文件core-site.xml、hdfs-site.xml放到phoenix/bin/下,替换phoenix原来的配置文件。
在node02执行以下命令,进行拷贝配置文件
cp /xsluo/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/core-site.xml /xsluo/install/apache-phoenix-4.14.0-cdh5.14.2-bin/bin/
cp /xsluo/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/hdfs-site.xml /xsluo/install/apache-phoenix-4.14.0-cdh5.14.2-bin/bin/
cp /xsluo/install/hbase-1.2.0-cdh5.14.2/conf/hbase-site.xml /xsluo/install/apache-phoenix-4.14.0-cdh5.14.2-bin/bin/
3、重启HBase集群,使Phoenix的jar包生效。
cd /xsluo/install/hbase-1.2.0-cdh5.14.2/
bin/stop-hbase.sh
bin/start-hbase.sh
记得要先启动hadoop集群、zookeeper集群。
在node01执行以下命令来重启hbase的集群:
[hadoop@node01 bin]$ sh xcall.sh jps
======== node01 jps ========
3424 ResourceManager
3060 NameNode
3271 SecondaryNameNode
9050 HMaster
3710 JobHistoryServer
4910 QuorumPeerMain
9214 HRegionServer
10559 Jps
======== node02 jps ========
3089 NodeManager
7603 HRegionServer
10531 Jps
9700 SqlLine
2997 DataNode
4219 QuorumPeerMain
7724 HMaster
======== node03 jps ========
3042 DataNode
4824 QuorumPeerMain
3129 NodeManager
8636 Jps
7038 HRegionServer
4、验证是否成功
在phoenix/bin下输入命令, 进入到命令行,接下来就可以操作了
在node02执行以下命令,进入phoenix客户端
cd /xsluo/install/apache-phoenix-4.14.0-cdh5.14.2-bin/
bin/sqlline.py node01:2181
[hadoop@node02 apache-phoenix-4.14.0-cdh5.14.2-bin]$ bin/sqlline.py node01:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:node01:2181 none none org.apache.phoenix.jdbc.PhoenixDriver Connecting to jdbc:phoenix:node01:2181 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found b