分布式存储系统HBASE-基础

本文深入浅出地介绍了HBase数据库的基本概念,包括其作为NoSQL数据库的特点、面向列的存储方式以及如何在Linux环境下安装配置。同时,提供了详细的命令行操作指南,如创建表、数据读写和表管理等,适合初学者快速掌握HBase的使用。

HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。

HBASE和MongoDB,redis一样,均是一种NoSql型数据库。


HBase简介

HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续存储在磁盘上。表中的每个单元格值都具有时间戳。其数据模型如下图所示:
在这里插入图片描述
总之,在HBase中,
表是行的集合
行是列族的集合
列族是列的集合
列是键值对的集合

这里的列式存储或者说面向列,其实说的是列族存储,HBase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。

HBase与RDBMS比较

在这里插入图片描述

HBase安装(linux环境)

下载Hbase,并解压到/usr/local目录下,将其改名为hbase。进入其bin目录可以看到版本:
$ ./hbase version
版本如下:
在这里插入图片描述
如果提示没有JAVA_HOME,则进入conf目录修改hbase-env.sh文件中的JAVA_HOME设置。
另外,设置HBASE_MANAGES_ZK为true,表示由hbase自己管理zookeeper,不需要单独的zookeeper。HBASE_CLASSPATH路径设置为/usr/local/hbase/conf目录。
在habse-site.xml中设置hbase.rootdir,用于指定HBase数据的存储位置,如果不设置的话,hbase.rootdir默认为/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。设置如下:

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>file:///usr/local/hbase/hbase-data</value>
        </property>
</configuration>

详细过程见参考资料1。

进入bin目录,运行start-hbase.sh即可启动:
$ ./start-hbase.sh
再通过bin/hbase shell打开shell命令行模式,用户可以通过输入shell命令操作HBase数据库:
/usr/local/hbase/bin$ ./hbase shell
打开的命令行模式如下:
在这里插入图片描述
输入exit则可停止HBase。

注意:如果在操作HBase的过程中发生错误,可以通过{HBASE_HOME}目录(/usr/local/hbase)下的logs子目录中的日志文件查看错误原因。

输入list可查看所有的表,如下:
在这里插入图片描述

安装模式

Hbase有三种安装模式,单机,伪分布式和完全分布式。上面的安装过程是一种单机模式。
想要使用伪分布式集群,则需要安装hadoop(详见参考资料2)。这里将hadoop解压到/usr/local目录下。修改配置文件core-site.xml:

<configuration>
    <property>
   	  	<name>hadoop.tmp.dir</name>
     	<value>file:/usr/local/hadoop/hadoop_data</value>
     	<description>Abase for other temporary directories.</description>
    </property>
    <property>
     	<name>fs.defaultFS</name>
     	<value>hdfs://localhost:9000</value>
 	</property>
</configuration>

修改hdfs-site.xml:

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>  # 伪分布式集群设置副本数量为1
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name
		<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
	</property>
</configuration>

在安装并配置好hadoop的基础上,对Hbase进行分布式配置:
修改hbase.rootdir,指定HBase数据在HDFS上的存储路径;将属性hbase.cluter.distributed设置为true。假设当前Hadoop集群运行在伪分布式模式下,在本机上运行,且NameNode运行在9000端口:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
</configuration>

接下来就可以运行分布式环境下的hbase了。
进入hadoop的sbin目录,运行start-dfs.sh,即可启动hadoop。从命令行可以看出,启动了namenode和两个datanode。
然后进入hbase的bin目录启动hbase:
$ ./start-hbase.sh
输入jps看到以下界面说明hbase启动成功:
在这里插入图片描述
进入shell界面:
$./hbase shell
后即可通过命令行操作hbase了。
在这里插入图片描述
(注意:如果list命令出现zookeeper data == null的提示,说明是hadoop配置有误,请检查配置)

HBase使用

命令说明
status查看habse状态
create ‘表名’,‘列族名1’,‘列族名2’,‘列族名N’创建表
list列出所有表
describe ‘表名’描述表
exists ‘表名’判断表是否存在
is_enabled/is_disabled ‘表名’判断是否启用/禁用表
put ‘表名’,‘rowkey’,‘列族:列’,‘值’添加记录
get ‘表名’,‘rowkey’查看rowKey下的所有数据
scan ‘表名’查看所有记录
count ‘表名’查看表中记录总数
get ‘表名’,‘rowkey’,'列族‘获取某个列族
get ‘表名’,‘rowkey’,‘列族:列’获取某个列族的某个列
delete ‘表名’,‘行名’,‘列族:列’删除记录
deleteall ‘表名’,‘rowkey’删除整行
第一步 disable ‘表名’,第二步 drop ‘表名’先要屏蔽该表,才能对该表进行删除
truncate ‘表名’清空表
scan ‘表名’,{COLUMNS=>‘列族名:列名’}查看某个表某个列中的所有数据

创建表User,有一个列族info:
在这里插入图片描述
描述表
在这里插入图片描述
判断表是否禁用/启用
在这里插入图片描述
添加记录:
在这里插入图片描述
查询
在这里插入图片描述
查询所有记录:语法:scan <table>, {COLUMNS => [family:column, ...], LIMIT => num}
在这里插入图片描述
范围查询
在这里插入图片描述
另外,还可以添加TIMERANGE和FILTER等高级功能,STARTROW、ENDROW必须大写,否则报错,查询结果不包含等于ENDROW的结果集。

删除记录
在这里插入图片描述
禁用或启用表:
在这里插入图片描述
删除表
在这里插入图片描述
本文介绍了HBase的基本概念,安装,命令行交互。下一篇文将继续介绍通过java和python操作hbase。

参考资料

[1]https://www.cnblogs.com/wang-jx/p/9672072.html
[2]https://www.jianshu.com/p/9c8a0f7b98cf
[3]https://www.cnblogs.com/swordfall/p/8737328.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值