引言
Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。
实验准备
1.一台配置好HBase伪分布安装的虚拟机
2.apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
实验步骤
1.准备软件包并解压,上传到/opt/download/下,解压到/opt/software/hadoop下。
[root@master download]# tar -zxvf apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz -C /opt/software/Hadoop
重命名软件包为phoenix500
2.配置环境变量,在文件末尾增加(shift+g):
vim /etc/profile
#在系统环境变量中加入以下内容
#PHOENIX
export PHOENIX_HOME=/opt/software/hadoop/phoenix500/
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PATH:$PHOENIX_HOME/bin
如下图所示:
保存并退出。
3.使环境变量生效:
source /etc/profile
4.配置phoenix,切换到phoenix500目录下,拷贝phoenix下的3个jar包到hbase的lib目录下:
[root@master phoenix500]# cp /opt/software/hadoop/phoenix500/phoenix-5.0.0-HBase-2.0-client.jar /opt/software/hadoop/hbase210/lib/
[root@master phoenix500]# cp /opt/software/hadoop/phoenix500/phoenix-core-5.0.0-HBase-2.0.jar /opt/software/hadoop/hbase210/lib/
[root@master phoenix500]# cp /opt/software/hadoop/phoenix500/phoenix-5.0.0-HBase-2.0-server.jar /opt/software/hadoop/hbase210/lib/
5.将phoenix的bin目录下配置文件hbase-site.xml文件中的内容追加到hbase的配置文件hbase-site.xml中(为了允许启用二级索引)
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
</property>
如下图所示:
6.将hbase的conf目录下的配置文件hbase-site.xml拷贝到phoenix的bin目录下,覆盖原有的配置文件:
[root@master phoenix500]# cp /opt/software/hadoop/hbase210/conf/hbase-site.xml /opt/software/hadoop/phoenix500/bin/
7.将hbase中配置文件core-site.xml、hdfs-site.xml软连接:
[root@master bin]# ln -s /opt/software/hadoop260/etc/hadoop/core-site.xml /opt/software/hadoop/phoenix500/bin/core-site.xml
[root@master bin]# ln -s /opt/software/hadoop260/etc/hadoop/hdfs-site.xml /opt/software/hadoop/phoenix500/bin/hdfs-site.xml
8.切换到bin目录,修改bin目录下的psql.py和sqlline.py两个文件的权限为777:
[root@master bin]# chmod 777 psql.py
[root@master bin]# chmod 777 sqlline.py
9.验证phoenix是否安装成功是否安装成功(命令格式:sqlline.py<hbase.zookeeper.quorum>; hbase.zookeeper.quorum 是 HBase 集群的 Zookeeper 队列,对应 IP/Hostname 逗号分割的列表,端口号可不带):
首先切换到Phoenix的bin目录下:
[root@master bin]# sqlline.py master:2181cd
10.使用phoenix
执行!tables 命令,列出所有表到客户端界面(注意: 通过该客户端展示出来的表都是 通过 Phoenix 客户端创建的,通过其他方式创建的表在此处不显示)
如下图所示: