Hbase性能优化【Phoenix、Hive集成HBase】

本文探讨了Phoenix作为HBase上的SQL层如何简化HBase数据管理,包括安装配置、表创建与数据操作;同时介绍了Hive如何集成HBase,实现类SQL操作及数据仓库构建;并涵盖了HBase命名空间管理与安全权限设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Phoenix概述

Phoenix简介

  • 构建在HBase上的SQL层
  • 使用标准SQL在HBase中管理数据
  • 使用JDBC来创建表,插入数据、对HBase数据进行查询
  • Phoenix JDBC Driver容易嵌入到支持JDBC的程序中
  • Phoenix使HBase更易用

Phoenix应用场景

Phoenix适合场景

  • 快速而容易地构建基于HBase的应用程序
  • 需要极大的规模、性能和并发性的SQL应用程序
  • 在转换到Hadoop时重用已有的SQL技能
  • BI工具(对SQL支持较好)

Phoenix不适合场景

  • 涉及大型Join操作或高级SQL特性的复杂SQL查询
  • Full-Table Scans
  • ETL jobs
  • Application Drivers/Interface

Phoenix安装

将安装包解压放入hbase的lib目录下

#root目录下创建software文件夹用于存放各种软件安装包,并进入software文件夹中
cd ~
mkdir software
cd software

#将安装包拖入文件夹中
#解压到opt目录下,这里随便选择,只要你能找到
tar -zxvf apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz -C /opt/

#进入到opt/apache-phoenix-4.14.0-cdh5.14.2-bin/目录下
cd /opt/apache-phoenix-4.14.0-cdh5.14.2-bin/

#复制phoenix-4.14.0-cdh5.14.2-server.jar包到hbase的lib目录下
 cp phoenix-4.14.0-cdh5.14.2-server.jar /opt/soft/hbase120/lib/

#进入到apache-phoenix-4.14.0-cdh5.14.2-bin的bin目录下
cd /opt/apache-phoenix-4.14.0-cdh5.14.2-bin/bin

#启动服务
./sqlline.py
#如果不行,请重启hbase

用Phoenix创建表,并插入数据,查询数据

#创建表
CREATE TABLE stock(COMPANY_ID INTEGER PRIMARY KEY,PRICE DECIMAL(10,2));
#插入数据
UPSERT INTO stock VALUES(1,78.5);
UPSERT INTO stock VALUES(2,46.53);
UPSERT INTO stock VALUES(3,132.53);
UPSERT INTO stock VALUES(4,32);
UPSERT INTO stock VALUES(5,87.9);

#查询数据
select * from stock;

二、Hive集成HBase

使用场景

  • 将HBase作为Hive数据源
    让HBase支持类SQL操作

  • 将Hive ETL数据存入HBase
    便于快速查询

  • 构建低延时的数据仓库
    利用HBase快速读写能力
    实现数据实时查询

Hive与HBase集成原理

  • 通过两者本身对外的API接口互相通信完成
    • 由Hive的lib目录中hive-hbase-handler-*.jar工具类实现
  • HBaseStorageHandler
    • 实现Hive与HBase集成的类
    • 对HiveStorageHandler接口的实现

Hive与hbase集成

案例演示

#在hbase中创建学生表
#创建学生表
create 'student','info'
#向学生表里添加数据
put 'student','1001','info:name','zhangsan'
put 'student','1001','info:age','20'
put 'student','1002','info:name','lisi'
put 'student','1002','info:age','21'
put 'student','1003','info:name','wangwu'
put 'student','1003','info:age','22'
put 'student','1004','info:name','lyq'
put 'student','1004','info:age','23'

#用hive创建外部表,连接hbase的student表
create external table student(
emp_id string,
emp_name string,
emp_age string
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties
("hbase.columns.mapping"=":key,info:name,info:age")
tblproperties("hbase.table.name"="student");

在hive中创建完表之后,用查询语句查询也是可以的
在这里插入图片描述
用hive创建的连接hbase的表,也可以插入数据

#在hive中插入数据
insert into student values('1005','cnl','27');

#在hbase中查询数据是否增加
scan 'student';

三、命名空间、安全权限

命名空间

NameSpace:一种易于表管理的机制
可以创建、删除或更改NameSpace

#创建namespace 
create_namespace 'my_ns’ 
#create my_table in my_ns namespace 
create 'my_ns:my_table', 'fam' 
#删除namespace 
drop_namespace 'my_ns’ 
#更改namespace 
alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'} 

安全权限

使用grant命令进行授权管理
如读、写、执行和管理等
我们可以为用户赋予RWXCA权限中的一个或多个

R -  read privilege	    读权限
W - write privilege	    写权限
C - create privilege	创建权限	
A - admin privilege	    管理权限
X - execute		        执行权限

语法:
grant <user> <permissions> <table> [<column family> [<column; qualifier>]] 
示例:
grant 'will', 'RWCA', 'my_hbase_table'

使用revoke命令删除所有权限

语法:revoke <user> <table> [<column family> [<column; qualifier>]]
示例:revoke 'will', 'my_hbase_table' 

使用user_permission查看用户对表所拥有的权限

语法:user_permission 'tablename'
示例:user_permission 'my_hbase_table'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值