一、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

hbase伪分布式安装 hbase 伪分布式_hbase伪分布式安装

hbase伪分布式安装 hbase 伪分布式_分布式_02

根据自己的hadoop版本和JDK版本 挑选完Hbase版本号之后,我们就去官网下载Hbase.

  1. HBase2.3.0下载安装:
    点击下面的地址下载HBase2.3.0安装文件HBase官网下载地址
  2. hbase伪分布式安装 hbase 伪分布式_Hadoop_03


  3. hbase伪分布式安装 hbase 伪分布式_分布式_04


下载完,将压缩包解压到你想安装的路径,并记住这个路径,后面配置会用。
我的路径是: /Users/shuaizai/Hbase/hbase-2.3.0/

  1. HBase伪分布式配置
    2.1将JAVA_HOME的路径添加到hbase-env.sh文件,修改vim $HBASE_HOME/conf/hbase-env.sh 如果在控制台不能编辑 那就直接去HBase安装路径下找conf文件夹,在里面有一个hbase-env.sh文件 用任何文本软件打开。然后设置你的JDK安装路径。(设置完记得把前面的“#”注释删除掉)。
  2. hbase伪分布式安装 hbase 伪分布式_Hadoop_05

  3. 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启动

hbase伪分布式安装 hbase 伪分布式_数据_06

  • 启动完成后通过jps命令检查HBase进程:

hbase伪分布式安装 hbase 伪分布式_Hadoop_07

启动成功后可以看到几个正在运行的Java进程,包括Hadoop(DataNode、NameNode)、Zookeeper(HQuorumPeer)和HBase(HMaster、HRegionServer)。
  • 输入hbase version命令查看HBase是否正常运行打印版本信息:

hbase伪分布式安装 hbase 伪分布式_数据库_08

  • 成功启动后,你也可以访问 HBase的Web 界面:http://localhost:16020 查看集群的运行状态信息。

hbase伪分布式安装 hbase 伪分布式_数据库_09

  • 进入HBase交互式界面hbase shellstatus命令查看HBase集群运行状态,list命令列出HBase库中的表:

hbase伪分布式安装 hbase 伪分布式_数据_10

  • 这里有个警告但不影响操作,问题截图:

hbase伪分布式安装 hbase 伪分布式_Hadoop_11

这个警告可以不用管。完美主义者,可以看这篇文章[一个笨蛋的博客]() 至于我自己,则没有理睬这个警告。

四、HBase Shell 编程实践

  1. HBase建表
create 'student','Sname','Ssex','Sage','Sdept','course'

hbase伪分布式安装 hbase 伪分布式_hbase伪分布式安装_12


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命令进行删除数据操作,它们的区别是:
  1. delete用于删除一个数据,是put的反向操作;
  2. deleteall操作用于删除一行数据。
# 删除一个数据,是put的反向操作
delete 'student','95001','Ssex'
# 删除student表中的95001行的全部数据
deleteall 'student','95001'
  • 查看数据
    HBase中有两个用于查看数据的命令:
    get命令,用于查看表的某一行数据;scan命令用于查看某个表的全部数据
# 查看‘student’表‘95001’行的数据
get 'student','95001'
# 查看‘student’表的全部数据
scan 'student'

hbase伪分布式安装 hbase 伪分布式_分布式_13

  • 删除表
    删除表有两步,第一步先让该表不可用,第二步删除表。
#先禁用表
disable 'student'
#删除表
drop 'student'
  • 关闭HBase
    先退出exit,然后输入stop-abase.sh

ok,大功告成。