Hbase单机部署&phoenix引入

Hbase搭建

单机版本搭建Hbase可以无需使用hadoop,直接使用文件系统存储(本文方式)。也可以使用hadoop hdfs进行存储。
安装环境:centos7
软件版本:jdk1.8.0 hbase2.0.0 phoenix5.0

下载hbase-2.0.0-bin.tar.gz
解压:
tar -xvf hbase-2.0.0-bin.tar.gz
配置:
vi hbase-2.0.0/conf/hbase-env.sh 
配置java_home
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
使用默认zk
export HBASE_MANAGES_ZK=true

vi hbase-2.0.0/conf/hbase-site.xml
添加内容:


        
                hbase.rootdir
                file:/home/XXX/hbase_data/hbase
        
        

引入phoenix

注意:使用phoenix要对应hbase的版本,根据phoenix命名对应
Hbase单机部署&phoenix引入_第1张图片
刚开始我使用了hbase2.0.5 phoenix5.0,创建索引正常,但是插入数据就会报错:
Failed 1 action: org.apache.phoenix.hbase.index.builder.IndexBuildingFailureException: Failed to build index for unexpected reason!
后面将hbase2.0.5换成hbase2.0.0,可以解决此问题。

开始安装:
下载apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
解压
tar -xvf apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
将phoenix-5.0.0-HBase-2.0-server.jar复制到hbase-2.0.0/lib/下
cp apache-phoenix-5.0.0-HBase-2.0-bin/phoenix-5.0.0-HBase-2.0-server.jar hbase-2.0.0/lib/

vi hbase-2.0.0/conf/hbase-site.xml
configuration标签中添加内容:


                hbase.regionserver.wal.codec
                org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
        

启动

启动hbase:
hbase-2.0.0/bin/start-hbase.sh
进入hbase控制台:
hbase shell

进入phoenix控制台:
sqlline.py localhost:2181

1.建表
create table if not exists equip_status(id bigint not null,equip_id integer,create_time date,status tinyint constraint my_pk primary key(id));

2.创建自增序列
CREATE SEQUENCE equip_sequence START WITH 10000 INCREMENT BY 1 CACHE 1;

3.插入测试数据
upsert into equip_status values (1,1, TO_DATE('2019-06-05 09:00:02'),0);

UPSERT INTO equip_status(id, equip_id, create_time,status) VALUES( NEXT VALUE FOR equip_sequence,1, TO_DATE('2019-06-05 09:00:03'),0)

4.创建二级索引
CREATE INDEX time_index ON equip_status(create_time desc);

可异步创建索引:
CREATE INDEX time_index ON equip_status(create_time desc) ASYNC;

删除索引:
drop index time_index ON equip_status;

5.使用二级索引查询
select create_time from equip_status order by create_time desc limit 1;

6.使用索引与不使用索引查询耗时对比
数据量:83万条数据
查询语句:
select * from equip_status where equip_id=1 order by create_time desc limit 1;
查询设备id为1最近一条的设备状态数据

不使用索引耗时:5.439 seconds
Hbase单机部署&phoenix引入_第2张图片

创建索引:
CREATE INDEX equip_index ON equip_status(equip_id,create_time desc,status);
查询耗时:0.036 seconds
Hbase单机部署&phoenix引入_第3张图片

你可能感兴趣的:(Hbase单机部署&phoenix引入)