一、HBase介绍
HBase是一个分布式的、面向列的开源数据库,源于Google的一篇论文《BigTable:一个结构化数据的分布式存储系统》。HBase以表的形式存储数据,表有行和列组成,列划分为若干个列族/列簇(column family)。欲了解HBase的官方资讯,请访问HBase官方网站。
HBase的运行有三种模式:单机模式、伪分布式模式、分布式模式。
- 单机模式:在一台计算机上安装和使用HBase,不涉及数据的分布式存储;
- 伪分布式模式:在一台计算机上模拟一个小的集群;
- 分布式模式:使用多台计算机实现物理意义上的分布式存储。这里出于学习目的,我只安装伪分布式模式,单机模式过于简单,这里就不需要了出教程了。
提前说明我的配置环境:hadoop 版本是2.10.0,HBase版本是2.3.0,Java 8。
说到这里,如果没有安装Hadoop,可以点这个链接看我上一篇文章。
二、安装并配置HBase2.3.0
在安装HBase之前,请确保你的电脑已经安装了Hadoop2.10.0,由于HBase对Hadoop具有版本依赖性,所以,在安装HBase2.3.0时,一定要首先安装Hadoop2.10.0 如果你用的是其他版本Hadoop,那么可以参考下面这张图片来选择兼容的HBase版本。在选择版本之前你还要在看一下你电脑安装的JDK是什么版本,支不支持你即将要装的HBase
根据自己的hadoop版本和JDK版本 挑选完Hbase版本号之后,我们就去官网下载Hbase.
- HBase2.3.0下载安装:
点击下面的地址下载HBase2.3.0安装文件HBase官网下载地址
下载完,将压缩包解压到你想安装的路径,并记住这个路径,后面配置会用。
我的路径是: /Users/shuaizai/Hbase/hbase-2.3.0/
- HBase伪分布式配置
2.1将JAVA_HOME
的路径添加到hbase-env.sh
文件,修改vim $HBASE_HOME/conf/hbase-env.sh
如果在控制台不能编辑 那就直接去HBase安装路径下找conf文件夹,在里面有一个hbase-env.sh文件 用任何文本软件打开。然后设置你的JDK安装路径。(设置完记得把前面的“#”注释删除掉)。 - 2.2在hbase-site.xml中添加如下内容:
同样地hbase-site.xml
文件也在HBas安装路径下conf文件下,找到并编辑。
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
hbase.rootdir:该参数制定了HReion服务器的位置,即数据存放的位置。主要端口号要和Hadoop相应配置一致。
hbase.cluster.distributed:HBase的运行模式。false是单机模式,true是分布式模式。若为false, HBase和Zookeeper会运行在同一个JVM里面,默认为false。
三、启动HBase:
在启动HBase之前,我们要让我们之前修改的配置操作生效,在控制台输入以下指令:
source ~/.bash_profile
然后就是启动hadoop(同时也要打开电脑的`远程连接')。
- 然后在控制台进入你安装的HBase/bin目录下
cd /users/shuaizai/hbase/hbase-2.3.0/bin
- 输入
start-hbase.sh
启动
- 启动完成后通过
jps
命令检查HBase进程:
启动成功后可以看到几个正在运行的Java进程,包括Hadoop(DataNode、NameNode)、Zookeeper(HQuorumPeer)和HBase(HMaster、HRegionServer)。
- 输入
hbase version
命令查看HBase是否正常运行打印版本信息:
- 成功启动后,你也可以访问 HBase的Web 界面:http://localhost:16020 查看集群的运行状态信息。
- 进入HBase交互式界面
hbase shell
,status
命令查看HBase集群运行状态,list
命令列出HBase库中的表:
- 这里有个警告但不影响操作,问题截图:
这个警告可以不用管。完美主义者,可以看这篇文章[一个笨蛋的博客]() 至于我自己,则没有理睬这个警告。
四、HBase Shell 编程实践
- HBase建表
create 'student','Sname','Ssex','Sage','Sdept','course'
2.HBase增删查改
- 添加数据
HBase中用put命令添加数据,注意:一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据,所以直接用shell命令插入数据效率很低,在实际应用中,一般都是利用编程操作数据。
# 为student表添加了学号为95001,名字为LiYing的一行数据,其行键为95001
put 'student','95001','Sname','LiYing'
# 为95001行下的course列族的math列添加了一个数据
put 'student','95001','course:math','80'
- 删除数据
在HBase中用delete以及deleteall命令进行删除数据操作,它们的区别是:
- delete用于删除一个数据,是put的反向操作;
- deleteall操作用于删除一行数据。
# 删除一个数据,是put的反向操作
delete 'student','95001','Ssex'
# 删除student表中的95001行的全部数据
deleteall 'student','95001'
- 查看数据
HBase中有两个用于查看数据的命令:
get命令,用于查看表的某一行数据;scan命令用于查看某个表的全部数据
# 查看‘student’表‘95001’行的数据
get 'student','95001'
# 查看‘student’表的全部数据
scan 'student'
- 删除表
删除表有两步,第一步先让该表不可用,第二步删除表。
#先禁用表
disable 'student'
#删除表
drop 'student'
- 关闭HBase
先退出exit
,然后输入stop-abase.sh
ok,大功告成。