目录

  • 第一部分 HBase 安装
  • 一 Linux 上安装 HBase
  • 1 下载安装文件
  • 2 配置环境变量
  • 3 添加用户权限并检查
  • 4 单机模式配置
  • 5 伪分布式模式配置
  • 第二部分 初步了解 HBase
  • 一 创建表
  • 二 添加数据
  • 三 查看数据
  • 四 删除数据
  • 五 删除表
  • 六 查询历史数据


第一部分 HBase 安装

一 Linux 上安装 HBase

HBase 有 3 种运行模式,即单机模式、伪分布式模式和分布式模式:

  1. 单机模式:采用本地文件系统存储数据。
  2. 伪分布式模式:采用伪分布式模式的 HDFS 存储数据。
  3. 分布式模式:采用分布式模式的 HDFS 存储数据。

在进行 HBase 安装配置之前,需要确认已经安装了 3 个组件:JDK、SSH 和 Hadoop:

  • Linux 上安装 JDK 请参照:Linux系统安装Java环境。
  • Linux 上安装 SSH 请参照:安装SSH。
  • HBase 单机模式不需要安装 Hadoop,伪分布式模式和分布式模式需要安装 Hadoop,Linux 上安装 Hadoop 请参照:Linux系统安装Hadoop。

1 下载安装文件

HBase 是 Hadoop 生态系统中的一个组件,但是,Hadoop 安装以后本身并不包含 HBase,因此需要单独安装 HBase。

我们在这里选择下载 2.2.4 版本的 HBase 作为示例,也可酌情选择下载其他版本:

  1. 进入 HBase 官网安装文件下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/,点击 2.2.4/:
  2. 点击下载 hbase-2.2.4-bin.tar.gz:
  3. 打开 Linux 终端,进入刚才下载文件所在的目录,通过下列命令将下载文件解压并保存到 /usr/local/ 目录下:
sudo tar -zxf hbase-2.2.4-bin.tar.gz -C /usr/local/
  1. 进入 /usr/local/ 目录,通过下列命令修改文件夹名为 hbase,以方便使用:
sudo mv ./hbase-2.2.4/ ./hbase/

2 配置环境变量

将 HBase 安装目录下的 bin 目录即 /usr/local/hbase/bin/,添加到系统的 PATH 环境变量中,这样每次启动 HBase 时就不需要到 /usr/local/hbase/bin/ 目录下执行启动命令,方便 HBase 的使用。

  1. 使用 vim 编辑器打开 ~/.bashrc 文件,命令如下:
vim ~/.bashrc
  1. 打开 .bashrc 文件以后,将以下语句加到文件第一行,如果已经有其他的 PATH 环境变量配置信息,只需要用英文冒号 “:” 隔开,将 /usr/local/hbase/bin 追加到其后即可:
export PATH=$PATH:/usr/local/hbase/bin
  1. 保存并退出 .bashrc 文件后,执行如下命令使设置生效:
source ~/.bashrc

3 添加用户权限并检查

  1. 为当前登录 Linux 系统的用户添加访问 HBase 目录的权限,将 HBase 安装目录下的所有文件的所有者改为当前登录用户,命令如下:
sudo chown -R 自己的用户名 /usr/local/hbase/
  1. 查看 HBase 版本信息,查看 HBase 是否安装成功:
hbase version
  1. 出现以下信息,说明安装成功:

4 单机模式配置

  1. 配置 hbase-env.sh 文件,打开 hbase-env.sh 文件以后,需要在 hbase-env.sh 文件中配置 JAVA 环境变量,通过以下命令可以知道自己的 JAVA 环境变量:
echo $JAVA_HOME
  1. 此外,还需要添加 Zookeeper 配置信息,配置 HBASE_MANAGES_ZK 为 true,表示由 HBase 自己管理 Zookeeper,不需要单独的 Zookeeper,因此,需要在 hbase-env.sh 文件中加入以下信息:
export JAVA_HOME=<自己的 JAVA 环境变量>
export HBASE_MANAGES_ZK=true
  1. 配置 hbase-site.xml 文件,在 hbase-site.xml 文件中,需要设置属性 hbase.rootdir,用于指定 HBase 数据的存储位置,如果没有设置,则 hbase.rootdir 默认数据存储在临时文件夹,这意味着每次重启系统都会丢失数据,这里把 hbase.rootdir 设置为 HBase 安装目录下的 hbase-tmp 文件夹,即 /usr/local/hbase/hbase-tmp,修改后的 hbase-site.xml 文件中的配置信息如下:
<configuration>
	<property>
		<name>hbase.rootdir</name>
		<value>file:///usr/local/hbase/hbase-tmp</value>
	</property>
</configuration>
  1. 启动并运行 HBase,可通过以下命令启动 HBase:
start-hbase.sh
  1. 输入 hbase shell 命令进入 HBase Shell 命令行模式,在该命令行模式,我们可以通过输入 Shell 命令来操作 HBase 数据库,输入 quitexit 即可退出该模式:
  2. 停止 HBase 运行:
stop-hbase.sh

5 伪分布式模式配置

  1. 配置 hbase-env.sh 文件,除了如单机模式那样配置 JAVA_HOME 和 HBASE_MANAGES_ZK 外,在伪分布式模式下,我们还需要设置 HBASE_CLASSPATH 参数为本机 Hadoop 安装目录下的 conf 目录,因此,在 hbase-env.sh 文件中,应该添加如下信息:
export JAVA_HOME=<自己的 JAVA 环境变量>
export HBASE_CLASSPATH=<自己的 Hadoop 安装目录>/conf/
export HBASE_MANAGES_ZK=true
  1. 配置 hbase-site.xml 文件,不同于单机模式那样设置 hbase.rootdir 属性为 HBase 安装目录下的 hbase-tmp 文件夹,在伪分布式模式下,需要使用伪分布式模式的 HDFS 存储数据,因此需要把 hbase.rootdir 属性设置为 HBase 在 HDFS 上的存储路径,一般地,HDFS 的访问路径为 hdfs://localhost:9000/,所以该属性应该设置为 hdfs://localhost:9000/hbase,此外,在伪分布式模式下,我们还需要设置 hbase.cluster.distributed 为 true,修改后的 hbase-site.xml 文件中的配置信息如下:
<configuration>
	<property>
		<name>hbase.rootdir</name>
		<value>hdfs://localhost:9000/hbase</value>
	</property>
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>
</configuration>
  1. 登录 SSH:
ssh localhost
  1. 启动 Hadoop,让 HDFS 进入运行状态,从而可以为 HBase 存储数据:
start-dfs.sh

输入命令 jps,如果能够看到 NameNode、DataNode 和 SecondaryNameNode 这三个进程,则表示已成功启动 Hadoop。

  1. 启动并运行 HBase:
start-hbase.sh

输入命令 jps,如果能够看到 HRegionServer、HQuorumPeer 和 HMaster 这三个进程,则表示已成功启动 HBase。

启动成功后,可以输入 hbase shell 命令进入 HBase Shell 命令行模式,在该命令行模式,我们可以通过输入 Shell 命令来操作 HBase 数据库。

  1. 先后关闭 HBase 和 Hadoop 服务:
stop-hbase.sh
stop-dfs.sh

第二部分 初步了解 HBase

在使用具体的 Shell 命令操作 HBase 数据之前,需要首先启动 Hadoop, 然后再启动 HBase 和 HBase Shell,进入 Shell 命令提示符状态,具体命令如下:

start-dfs.sh
start-hbase.sh
hbase shell

一 创建表

在关系型数据库(如 MySQL)中,需要首先创建数据库,然后再创建表,但是在 HBase 数据库中,不需要创建数据库,只要直接创建表就可以了,在 HBase 中创建表的 Shell 命令为 create '表名','字段名1','字段名2','字段名3',例如,我们可以通过如下命令建立一张学生表:

create 'student','Sname','Ssex','Sage','Sdept','course'

创建完表后,可通过 describe '表名' 命令查看表的基本信息,我们可以执行 describe 'student' 命令查看学生表的信息:

hbase进入数据库 hbase怎么进入_HBase


还可以使用 list 命令查看当前 HBase 数据库中已经创建了哪些表:

hbase进入数据库 hbase怎么进入_hbase进入数据库_02

二 添加数据

HBase 使用命令 put '表名','行键','字段名1','值1' 添加数据,一次只能为一个表的一行数据的一个列(也就是一个单元格,单元格是 HBase 中的概念)添加一个数据,所以直接用 Shell 命令插入数据效率很低,在实际应用中,一般都是利用编程操作数据。

需注意的是,对于 HBase 而言,在创建 HBase 表时,不需要自行创建行键,系统会默认一个属性作为行键,通常是把 put 命令操作中跟在表名后的第一个数据作为行键。

我们对刚才的学生表插入一条学生记录:

hbase进入数据库 hbase怎么进入_hbase进入数据库_03


上面的 put 命令会为学生表中学号为 ‘12345’ 的学生添加信息,系统默认把跟在表名 student 后面的第一个数据 ‘12345’ 作为行键。

三 查看数据

HBase 中有两个用于查看数据的命令:

  • 命令 get '表名','行键':用于查看表的某一个单元格数据,例如可以使用如下命令返回学生表中学号为 12345 的学生的数据:
  • 命令 scan '表名':用于查看某个表的全部数据,例如查询学生表的全部数据:

四 删除数据

HBase 中有两个用于删除数据的命令:

  • 命令 delete '表名','行健','字段名1':用于删除一个单元格数据,是 put 的反向操作,例如删除学生表中 12345 这一行中的 Ssex 列的所有数据:
  • 命令 deleteall '表名','行健':用于删除一行数据,例如删除学生表中 12345 这一行的全部数据:

五 删除表

删除表需要分两步操作:

  1. 使用命令 disable '表名' 让要删除的表不可用;
  2. 使用命令 drop '表名' 删除表.

例如删除刚才的学生表:

hbase进入数据库 hbase怎么进入_数据_04

六 查询历史数据

在添加数据时,HBase 会自动为添加的数据添加一个时间戳,在修改数据时,HBase 会为修改后的数据生成一个新的版本(时间戳),从而完成 “改” 操作,但是旧的版本依旧会保留,系统会定时回收垃圾数据,只留下最新的几个版本,保存的版本数可以在创建表的时候指定。

为了查询历史数据,这里创建一个教师表,在创建表的时候,指定保存的版本数为 5:

hbase进入数据库 hbase怎么进入_Hadoop_05


然后插入数据,并更新数据,使其产生历史版本数据,需要注意的是,这里插入数据和更新数据都是使用 put 命令:

hbase进入数据库 hbase怎么进入_hbase进入数据库_06


查询时默认情况下会显示当前最新版本的数据,如果要查询历史数据,需要指定查询的历史版本数,由于上面设置了保存版本数为 5,所以,在查询时指定的历史版本数的有效取值为 1 到 5,但超过了不会报错,只会显示最大数目个版本:

hbase进入数据库 hbase怎么进入_HBase_07