HBase介绍及交互式Shell使用

大数据与分布式 fireling 422℃

HBase介绍

HBase是运行于HDFS顶层的非关系型数据库,它具备随即读写功能,是一种面向列的数据库。

我们都知道,Hive能将SQL指令转化为MapReduce任务执行,虽然它基于HDFS存储,但仍可看作分布式的SQL系统。与之相比,HBase采用了Bigtable的数据模型——增强的稀疏排序映射表(key-value),因此可看作分布式的NoSQL系统。HBase也延续了NoSQL数据库的优点,存储数据灵活、查询速度快,但适合更大的数据量

HBase以的形式存储数据,表由多个组成,每一行包括行键(Row Key)及若干个列簇(Column Family),每个列簇有若干个列修饰符(Column),每个列修饰符又可以有若干个版本(Version)。而在HBase中每一行代表由行键标识的键值映射组合,其中,键由行键、列簇、列修饰符、版本构成,每一个键值对在HBase会被定义为一个Cell。HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

HBase架构

在HBase中,region是一个基本概念。一个用户表通常会被切分成多个region,分别存储在多个region server上,由region server处理对这些region的io请求,并负责切分在运行过程中变得过大的region。

管理region server集群,则由master负责。master主要为region server分配region,负责region server的负载均衡,并发现失效的region server并重新分配其上的region。

HBase中有两个非常重要的表:.META.表和-ROOT-表。.META.表用来记录用户表的region信息,它也会被切分成多个region,分别存储在多个region server上。-ROOT-表则用来记录.META.表的region信息,-ROOT-表永远只有一个region,存储在一个region server上。在进行数据访问时,需要知道管理-ROOT-表的region server的地址,也就是所有region的寻址入口,存在zookeeper中。

另外,client包含访问HBase的接口,维护着一些cache来加快对HBase的访问,比如region信息,因此不会影响到master

HBase环境搭建

HBase会用到HDFS存储数据,因此要先安装Hadoop。

安装HBase


sudo tar -zxvf ./hbase*.tar.gz -C /opt
sudo mv /opt/hbase* /opt/hbase

配置环境变量


export HBASE_HOME=/opt/hbase
export PATH=${HBASE_HOME}/bin:$PATH

修改配置文件

在${HBASE_HOME}目录下,主要进行如下几个配置文件的修改:


conf/hbase-env.sh
conf/hbase-site.xml
conf/regionservers

HBase Shell启动与使用

使用HBase交互式Shell进行操作,需要先启动hbase服务,再运行hbase shell命令即可。

启动HBase Shell交互式终端


${HBASE_HOME}/bin/start-hbase.sh

输入 jps 命令查询服务:

输入 hbase shell 命令:

使用HBase Shell进行表操作

  • 列出所有的表

hbase(main):001:0> list
TABLE                                                                                                                                                                                        
0 row(s) in 0.1430 seconds

=> []
  • 创建表student

hbase(main):002:0> create 'student', 'info'
0 row(s) in 2.3800 seconds

=> Hbase::Table - student
  • 查看student表结构

hbase(main):003:0> describe 'student'
Table student is ENABLED                                                                                                                                                                     
student                                                                                                                                                                                      
COLUMN FAMILIES DESCRIPTION                                                                                                                                                                  
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERS
IONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                                                                                                           
1 row(s) in 0.0650 seconds
  • 向student表中插入一条数据

hbase(main):004:0> put 'student', 'mary', 'info:age', '19'
0 row(s) in 0.0860 seconds
  • 从student表中取出mary的数据

hbase(main):005:0> get 'student', 'mary'
COLUMN                                           CELL                                                                                                                                        
 info:age                                        timestamp=1516863128560, value=19                                                                                                           
1 row(s) in 0.0330 seconds
  • 让student表失效

hbase(main):006:0> disable 'student'
0 row(s) in 2.3010 seconds
  • 删除student表

hbase(main):007:0> drop 'student'
0 row(s) in 1.2880 seconds

 

转载请注明:宁哥的小站 » HBase介绍及交互式Shell使用

喜欢 (2)