提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
HBase 不支持 SQL 语法,使用非常不便,所以诞生丁 Phoenix。 Phoenix 是通过一个嵌人的 JDBC驱动存储在HBase 中的数据的查询。Phoenix 可以让开发者在 HBase数据集上使用 SQL 查询。
一、Phoenix是什么?
Phoenix:JAVA语言编写,查询引擎会将SQL查询语句转化成一个或多个HBase Scanner,且并行执行生成标准的JDBC结果集。phoenix使用标准JDBC API代替HBase客户端API来创建表、插入数据和查询HBase数据。我可以理解为phoenix是HBASE的一个框架,通过使用标准的SQL语句来操作HBASE。
Phoenix特点:
1)容易集成:如Spark,Hive,Flume和Map Reduce;
2)操作简单:DML命令以及通过DDL命令创建和操作表和版本化增量更改;
3)支持HBase二级索引创建。
具体可看官方:http://phoenix.apache.org/
二、使用步骤
1.环境准备
说明 | 软件 |
---|---|
操作系统 | Windows 10 |
虚拟机 | VMware 15.5 |
Linux系统 | Centos 7 64位 |
Zookeeper | zookeeper-3.4.10 |
Hadoop | hadoop-3.3.1 |
HBase | Hbase2.4.4 |
Hive | Hive3.1.2 |
Kafka | kafka_2.12-3.0.0 |
Spark | spark-3.1.3 |
Scala | scala-2.12.10 |
开发工具 | IntelliJ IDEA 2020.1 |
Phoenix | phoenix-hbase-2.4-5.1.2 |
2.集群规划
IP | HostName | Software | Process |
---|---|---|---|
192.168.74.88 | hadoop01 | hadoop,zookeeper,hbase,hive,mysql,kafka,spark,scala | DataNode,NodeManager,QuorumPeerMain,JournalNode,NameNode,DFSZKFailoverController,ResourceManager,HMaster,HRegionServer,RunJar,RunJar,kafka,Master,Worker |
192.168.74.89 | hadoop02 | hadoop,zookeeper,kafka,spark,scala | DataNode,NodeManager,QuorumPeerMain,JournalNode,NameNode,DFSZKFailoverController,HRegionServer,kafka,Worker |
192.168.74.90 | hadoop03 | hadoop,zookeeper,hbase,hvie,kafka,spark,scala | DataNode,NodeManager,QuorumPeerMain,JournalNode,ResourceManager,HMaster,HRegionServer,RunJar,kafka,Master,Worker |
2.Phoenix安装
代码如下(示例):
hadoop01 hbase
hadoop02
hadoop03 hbase
phoenix-hbase-2.4-5.1.2-bin.tar.gz
su hadoop
cd /data/phoenix
tar -zxvf phoenix-hbase-2.4-5.1.2-bin.tar.gz
1、# 重命名一下文件夹
mv phoenix-hbase-2.4-5.1.2-bin app
2、# 将phoenix-server-hbase-2.4-5.1.2.jar文件拷贝到HBase的lib目录下
cd /data/phoenix/app
cp phoenix-server-hbase-2.4-5.1.2.jar /data/hbase/app/lib/
3、# 系统环境变量
》ok--------------------------------------
vim ~/.bashrc
gedit ~/.bashrc
export PHOENIX_HOME=/data/phoenix/app
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PATH:$PHOENIX_HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
source ~/.bashrc
--------------------------------------------
4、#软连接hbase-site.xml
## 进入bin目录
cd /data/phoenix/app/bin/
##软连接hbase-site.xml文件
ln -sf /data/hbase/app/conf/hbase-site.xml
5、#将文件同步到其他主机上
scp -r/data/phoenix/app/lib/phoenix-server-hbase-2.4-5.1.2.jar hadoop@hadoop02:/data/phoenix/app/lib
scp -r /data/phoenix/app hadoop@hadoop02:/data/phoenix
scp -r /data/phoenix/app hadoop@hadoop03:/data/phoenix
scp -r /data/phoenix/app/lib/phoenix-server-hbase-2.4-5.1.2.jar hadoop@hadoop03:/data/phoenix/app/lib
6、# 重启HBase
stop-hbase.sh
start-hbase.sh
7、# 连接phoenix
/data/phoenix/app/bin/sqlline.py hadoop01,hadoop02,hadoop03:2181
# 输入!tables查看是否安装成功
3.Phoenix Shell 表操作
(1)显示所有表
!table 或 !tables
(2)创建表
CREATE TABLE IF NOT EXISTS us_population (
state CHAR(2) NOT NULL,
city VARCHAR NOT NULL,
population BIGINT
CONSTRAINT my_pk PRIMARY KEY (state, city));
(3)插入数据
upsert into us_population values(‘NY’,‘NewYork’,8143197);
upsert into us_population values(‘BJ’,‘BeiJing’,8143198);
(4)查询记录
select * from us_population;
select * from us_population where population=8143197;
(4)删除记录
delete from us_population where population=8143197;
(5)删除表
drop table us_population;
总结
记录点点滴滴