本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
之前发现HBase虽然数据存储是快了,但是手动在命令行插入数据的时候需要一个个插入,有点累,然后就发现了Phoenix。Phoenix中文翻译为凤凰, 其最早是Salesforce的一个开源项目,后来成为Apache基金的顶级项目。本文是在【教程】【环境搭建】大数据伪分布式搭建Hadoop(Win10+ECS+putty+FileZilla)【教程】【环境搭建】大数据伪分布式搭建HBase(Win10+ECS+putty+FileZilla)这两篇博客的基础环境上继搭建的。
解压缩Phoenix安装文件
1.下载
这里选用的HBase的版本是4.10.0,因为之前我安装的是1.1.5的HBase。这是官网的下载界面,记得要和HBase版本对应。bin是二进制文件,解压可以直接用,src是源文件,需要自行编译。官网下载传送:phoenix.apache.org/download.ht…
我的版本:apache-phoenix-4.10.0-HBase-1.1-bin.tar.gz
2.解压缩
我下载的是bin文件,已经放入Downloads文件夹下。这里就直接解压了,最好还是自己换个文件夹保存。 (1)进入用户的下载目录
cd ~/Downloads
(2)解压到当前文件夹下
tar -zxvf apache-phoenix-4.14.0-HBase-1.2-bin.tar.gz
安装并启动Phoenix
1.拷贝jar到Hbase的lib目录下
(1)进入上面已经解压好的文件夹下
cd ~/Downloads/apache-phoenix-4.10.0-HBase-1.1-bin
(2)列出所有文件
ls
框内的文件就是我们需要拷贝的:
(3)拷贝文件到HBase的lib目录下
cp phoenix-4.10.0-HBase-1.1-server.jar /usr/local/hbase/lib
2.启动Hadoop(如果已经启动Hadoop请跳过此步骤)
(1)进入/usr/local/hadoop
cd /usr/local/hadoop
(2)启动Hadoop
./sbin/start-dfs.sh
(3)查看是否启动成功
jps
如果显示以下类似的进程信息,则表明启动成功:
992 Jps
647 DataNode
873 SecondaryNameNode
494 NameNode
3.启动HBase
(1)进入/usr/local/hbase
cd /usr/local/hbase
(2)启动HBase
./bin/start-hbase.sh
(3)查看是否启动成功
jps
如果显示一以下类似的进程信息,则表明启动成功:
2579 HMaster
2708 HRegionServer
647 DataNode
3016 Jps
873 SecondaryNameNode
494 NameNode
2510 HQuorumPeer
4.进入Phoenix控制台
(1)回到直接的解压目录
cd ~/Downloads/apache-phoenix-4.10.0-HBase-1.1-bin/
(2)进入控制台
./bin/sqlline.py
会显示以下信息:
基本安装就到这里了,下面是一些简单操作的演示。
简单操作演示
1.显示所有表
语句:
/hbase> !tables
输出:
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+---------------+-+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | INDEX_STATE | IMMUTABLE_ROWS | SALT_BUCKETS | |
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+---------------+-+
| | SYSTEM | CATALOG | SYSTEM TABLE | | | | | | false | null | |
| | SYSTEM | FUNCTION | SYSTEM TABLE | | | | | | false | null | |
| | SYSTEM | SEQUENCE | SYSTEM TABLE | | | | | | false | null | |
| | SYSTEM | STATS | SYSTEM TABLE | | | | | | false | null | |
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+---------------+-+
2.创建新表并显示
语句:
/hbase> !sql
. . . > create table test1 (mykey integer not null primary key, mycolumn varchar);
输出:
No rows affected (1.307 seconds)
2.插入数据
语句:
/hbase> upsert into test1 values (1,'Hello World!');
输出:
1 row affected (0.037 seconds)
这里可以看出通过Phoenix可以用SQL对一行多个值进行插入,加上二级索引比之前方便多了。
3.查询表
语句:
/hbase> select * from test1;
结果:
+--------+---------------+
| MYKEY | MYCOLUMN |
+--------+---------------+
| 1 | Hello World! |
+--------+---------------+
1 row selected (0.05 seconds)
4.删除记录
语句:
/hbase> delete from test1 where mykey = 1;
结果:
1 row affected (0.017 seconds)
查询表:
+--------+-----------+
| MYKEY | MYCOLUMN |
+--------+-----------+
+--------+-----------+
No rows selected (0.037 seconds)
5.退出
语句:
/hbase> ! quit
输出:
Closing: org.apache.phoenix.jdbc.PhoenixConnection
后记
作为NoSQL的HBase加上了二级索引的SQL,所以可以称为HSQL吗,总之尝试一下这些奇怪的东西也是挺有趣的。
参考文章
1.Hbase之使用Phoenix连接 2.浅谈Phoenix在HBase中的应用 3.Phoenix的shell简单操作