目录
1 Phoenix简介
Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。
简要来说,phoenix是一个强化hbase查询功能的中间件,内部实际借助了hbase的协处理的功能,正如官网上说的那样,它可以将hbase转化成关系型数据库,当然它也支持大部分关系型数据库的功能。
2 版本对应关系
Hadoop与Hbase版本对应关系
安装前记得查看当前的hadoop、hbase版本,保证hadoop和hbase版本兼容的情况下,根据hbase版本选择phoenix版本。
要获取版本对应关系信息可以从官网查看:http://hbase.apache.org/book.html,进入后搜索Hadoop version support matrix可以快速找到对应内容。
截止20-12-13,版本对应关系如下:
Hbase与Phoenix版本对应关系
从Phoenix下载地址查看:http://phoenix.apache.org/download.html
版本对应关系为:
注:点击页面最下方 Apache Archive可以查看更多版本
我的版本
因为是新搭建的集群,所以我选择的版本是Hadoop 2.9.2 Hbase 2.2.6 Zookeeper 3.5.8 Phoenix 5.0.0【可以使用】。
首先需要明确的是hadoop和hbase版本必须对应,其次,phoenix版本好像只对应了某几个固定的版本号,所以我就选择了phoenix5.0.0来对应hbase2.2.6版本,是可以使用的【不确定这里的phoenix版本是不是向上兼容】
另外在另一台机器上测试,也有一套版本可以使用,将两套配置方案贴出来供各位参考:
- Hadoop 2.9.2 Hbase 2.2.6 Phoenix 5.0.0
- Hadoop 2.8.5 Hbase 1.4.6 Phoenix 4.13.0
3 phoenix安装
下载
Phoenix下载地址:http://phoenix.apache.org/download.html 【注意选择对应自己机器的版本】
我是直接wget下载到机器上:
wget https://mirrors.bfsu.edu.cn/apache/phoenix/apache-phoenix-5.0.0-HBase-2.0/bin/apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
解压
解压到当前目录下
tar -zxvf apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
注:若有多台机器记得将phoenix目录拷贝到其他节点,我这只有一台就没有拷贝。
复制jar包到hbase/lib目录下
将apache-phoenix-5.0.0-HBase-2.0-bin下的phoenix-5.0.0-HBase-2.0-server.jar包放到HBASE_HOME/lib下:
注:如果有多个节点,需要拷贝到每个节点的HBASE_HOME/lib目录下
拷贝配置文件
将以下3个文件拷贝到apache-phoenix-5.0.0-HBase-2.0-bin/bin目录下:
HADOOP_HOME/etc/hadoop/hdfs-site.xml
HADOOP_HOME/etc/hadoop/core-site.xml
HBASE_HOME/conf/hbase-site.xml
修改配置文件
在apache-phoenix-5.0.0-HBase-2.0-bin/bin目录下的hbase-site.xml文件中加入如下内容:
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
注:推荐使用软连接的方式建立
重启hbase
HBASE_HOME/bin/stop-hbase.sh
HBASE_HOME/bin/start-hbase.sh
启动phoenix
PHOENIX_HOME/sqlline.py master:2181
注:sqlling.py 后跟你的机器节点,我只有一个所以只写了一个,2181是连接的zookeeper端口
4 踩过的坑
- 先选好对应的集群版本,phoenix版本也需要确认,否则很可能出错
- jar包(phoenix-5.0.0-HBase-2.0-server.jar)一定要拷贝到所有节点的HBASE_HOME/lib目录下
- 最好使用软连接的方式将配置文件放到apache-phoenix-5.0.0-HBase-2.0-bin/bin目录下